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 的