3.5.2.1.14. 嵌入式组件(废弃)
从 CUBA Platform 6.8 开始这个 |
Embedded
组件是用来显示图片和在应用程序界面中嵌入任何形式的网页。
该组件对应的 XML 名称: embedded
下面这个例子演示了怎样用这个组件显示一个从 FileStorage 读取的图片:
-
在 XML 描述中定义该组件:
<groupBox caption="Embedded" spacing="true" height="250px" width="250px" expand="embedded"> <embedded id="embedded" width="100%" align="MIDDLE_CENTER"/> </groupBox>
-
在界面控制器中,注入该组件和
FileStorageService
接口。在init()
方法中,从调用方获取FileDescriptor
,然后加载对应的文件到字节数组中,并通过字节数组创建ByteArrayInputStream
然后传给组件的setSource()
方法:@Inject private Embedded embedded; @Inject private FileStorageService fileStorageService; @Override public void init(Map<String, Object> params) { FileDescriptor imageFile = (FileDescriptor) params.get("imageFile"); byte[] bytes = null; if (imageFile != null) { try { bytes = fileStorageService.loadFile(imageFile); } catch (FileStorageException e) { showNotification("Unable to load image file", NotificationType.HUMANIZED); } } if (bytes != null) { embedded.setSource(imageFile.getName(), new ByteArrayInputStream(bytes)); embedded.setType(Embedded.Type.IMAGE); } else { embedded.setVisible(false); } }
Embedded
组件支持几种不同类型的内容,在 HTML 里以不同方式渲染。可以用 setType()
来设置内容类型。支持的类型如下:
-
OBJECT
- 允许在 HTML 的 <object> 和 <embed> 标签里嵌入特定的文件类型。 -
IMAGE
- 在 HTML 的 <img> 标签嵌入图片。 -
BROWSER
- 在 HTML 的 <iframe> 中嵌入一个网页。
在 Web Client 里面,这个组件支持显示存储在 VAADIN
文件夹的文件。可以采用相对路径来访问这个文件夹的资源,比如:
<embedded id="embedded"
relativeSrc="VAADIN/themes/halo/my-logo.png"/>
或者:
embedded.setRelativeSource("VAADIN/themes/halo/my-logo.png")
也可以通过应用程序属性 cuba.web.resourcesRoot 来定义源文件目录。然后采用 file://
、url://
,或者 theme://
这些前缀引用这个目录下的文件:
<embedded id="embedded"
src="file://my-logo.png"/>
或者
embedded.setSource("theme://branding/app-icon-menu.png");
如果要显示外部网页,把外部网页的 URL 传给这个组件就行了:
try {
embedded.setSource(new URL("http://www.cuba-platform.com"));
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}
- embedded 的属性
-
align - caption - captionAsHtml - contextHelpText - contextHelpTextHtmlEnabled - description - descriptionAsHtml - height - id - relativeSrc - src - stylename - visible - width