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 的
在 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