o:不显示graphicImage图像

时间:2018-03-29 19:43:01

标签: jsf omnifaces

我一直面临Omnifaces 2.1的问题。

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

 @Lob
    private byte[] image;

在我的xhtml文件中,我在一个包含图像的类上有一个循环:

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

1 个答案:

答案 0 :(得分:4)

  

当我执行此操作时,我没有图像,当检查元素时,我得到了结果:

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

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

这可能有两个原因:

  1. OmniFaces未安装在webapp中。
  2. 未在XHTML页面中声明o XML命名空间。
  3. 解决此问题的正常程序是:

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

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

          

        INFO [org.omnifaces.ApplicationInitializer]使用OmniFaces 2.6.8版

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