o:graphicImage 图片未显示

o:graphicImage images not displayed

我一直面临 Omnifaces 2.1 的问题。

我有一个图像类型 byte[] 存储在我的数据库中,声明 java class 如下:

 @Lob
    private byte[] image;

在我的 xhtml 文件中,我在 class 上有一个循环,其中有一个图像:

<ui:repeat var="listT" value="#{eventBean.listEvents}">                                             
<o:graphicImage value="#{eventBean.getImage(listT.idEvent)}"  dataURI="true" />  
</ui:repeat>

现在,在我的 bean 中,我尝试实现 omnifaces 文档中提到的 getImage() 功能:

 @ManagedBean
 @ViewScoped
 public class EventBean implements Serializable {

 private static final long serialVersionUID = 1L;
 @EJB
 private EventServiceLocal eventServiceLocal;
 private Event event = new Event();
 private List<Event> listEvents;
 private List<Event> listEventsval;
 private static Event eventSt;
 private UploadedFile file;

 public byte[] getImage(int eventID) {

    return eventServiceLocal.listEventspicture(eventID);
}

当我执行这个时,我没有图像,当我检查元素时,结果是这样的:

 <o:graphicimage value="[B@1aeef88" datauri="true"></o:graphicimage>

when i execute this i got no image and when inspect the element i get this as result :

<o:graphicimage value="[B@1aeef88" datauri="true"></o:graphicimage>

换句话说,<o:xxx> 标签根本不起作用。这不仅限于 <o:graphicImage>。同一页面中的所有其他 <o:xxx> 标记也将不起作用。

这可能有 2 个原因:

  1. Web 应用程序中未安装 OmniFaces。
  2. XHTML 页面中未声明 [​​=14=] XML 命名空间。

解决这个问题的正常程序是:

  1. 将 OmniFaces JAR 文件添加到 /WEB-INF/lib(或让您的依赖项管理器执行此操作)。
  2. xmlns:o="http://omnifaces.org/ui 添加到某些父元素。

验证工作:

  1. 从您的项目导出 WAR 文件并使用 ZIP 工具检查它时,物理 OmniFaces JAR 文件应该存在于 /WEB-INF/lib 文件夹中,并且应该有一个部署期间服务器日志中的如下行:

    INFO [org.omnifaces.ApplicationInitializer] Using OmniFaces version 2.6.8

  2. 生成的 HTML 输出中的任何地方都不应有 <o:xxx> 标记。