3.5.2.1.14. 嵌入式组件(废弃)


从 CUBA Platform 6.8 开始这个 Embedded 组件就不推荐使用了。替换方案是使用 Image 组件来显示图片,用 BrowserFrame 组件来嵌入网页。

在线示例

Embedded 组件是用来显示图片和在应用程序界面中嵌入任何形式的网页。

该组件对应的 XML 名称: embedded

下面这个例子演示了怎样用这个组件显示一个从 FileStorage 读取的图片:

  • 在 XML 描述中定义该组件:
  1. <groupBox caption="Embedded" spacing="true"
  2. height="250px" width="250px" expand="embedded">
  3. <embedded id="embedded" width="100%"
  4. align="MIDDLE_CENTER"/>
  5. </groupBox>
  • 在界面控制器中,注入该组件和 FileStorageService 接口。在 init() 方法中,从调用方获取 FileDescriptor,然后加载对应的文件到字节数组中,并通过字节数组创建 ByteArrayInputStream 然后传给组件的 setSource() 方法:
  1. @Inject
  2. private Embedded embedded;
  3. @Inject
  4. private FileStorageService fileStorageService;
  5. @Override
  6. public void init(Map<String, Object> params) {
  7. FileDescriptor imageFile = (FileDescriptor) params.get("imageFile");
  8. byte[] bytes = null;
  9. if (imageFile != null) {
  10. try {
  11. bytes = fileStorageService.loadFile(imageFile);
  12. } catch (FileStorageException e) {
  13. showNotification("Unable to load image file", NotificationType.HUMANIZED);
  14. }
  15. }
  16. if (bytes != null) {
  17. embedded.setSource(imageFile.getName(), new ByteArrayInputStream(bytes));
  18. embedded.setType(Embedded.Type.IMAGE);
  19. } else {
  20. embedded.setVisible(false);
  21. }
  22. }

Embedded 组件支持几种不同类型的内容,在 HTML 里以不同方式渲染。可以用 setType() 来设置内容类型。支持的类型如下:

  • OBJECT - 允许在 HTML 的 标签里嵌入特定的文件类型。

  • IMAGE - 在 HTML 的 嵌入式组件(废弃) - 图1 标签嵌入图片。

  • BROWSER - 在 HTML 的

在 Web Client 里面,这个组件支持显示存储在 VAADIN 文件夹的文件。可以采用相对路径来访问这个文件夹的资源,比如:

  1. <embedded id="embedded"
  2. relativeSrc="VAADIN/themes/halo/my-logo.png"/>

或者:

  1. embedded.setRelativeSource("VAADIN/themes/halo/my-logo.png")

也可以通过应用程序属性 cuba.web.resourcesRoot 来定义源文件目录。然后采用 file://url://,或者 theme:// 这些前缀引用这个目录下的文件:

  1. <embedded id="embedded"
  2. src="file://my-logo.png"/>

或者

  1. embedded.setSource("theme://branding/app-icon-menu.png");

如果要显示外部网页,把外部网页的 URL 传给这个组件就行了:

  1. try {
  2. embedded.setSource(new URL("http://www.cuba-platform.com"));
  3. } catch (MalformedURLException e) {
  4. throw new RuntimeException(e);
  5. }

embedded 的属性

align - caption - captionAsHtml - contextHelpText - contextHelpTextHtmlEnabled - description - descriptionAsHtml - height - id - relativeSrc - src - stylename - visible - width