来自数据库的primefaces graphicimage没有加载

时间:2014-03-17 00:23:49

标签: java jsf jsf-2 primefaces graphicimage

我无法在primefaces graphicimage组件上显示数据库中的图像。我使用的是primefaces 3.4.2,jsf 2.2,glassfish 3.1.2.2。以下是我正在尝试的简单代码。我浏览了与p:graphicimage相关的其他帖子,并将建议纳入其中,但我仍然可以完成这项工作。这有什么不对?

的index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui">
<h:head>
</h:head>
<h:body>
    <h:form id="f1">
        <p:panel style="height: 500px ; width: 800px" visible="true">
            <p:graphicImage value="#{treeBean.image}" />
        </p:panel>
    </h:form>
</h:body>
</html>

TreeBean.java

@Named
@ApplicationScoped
public class TreeBean implements Serializable{
    @EJB
    private ImageEJB imageEjb;
    public StreamedContent getImage() throws IOException{
        FacesContext context = FacesContext.getCurrentInstance();
        if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
            return new DefaultStreamedContent();
        }
        else {
            Decisiontree dr = imageEjb.getTree();
            return new DefaultStreamedContent(new ByteArrayInputStream(dr.getImage()));
        }
    }
}

这是我在浏览器控制台中看到的。

Error in console

1 个答案:

答案 0 :(得分:2)

  1. 在web.xml中添加MIME类型,如下所示: -

    <mime-mapping>
       <extension>xhtml</extension>
       <mime-type>image/svg+xml</mime-type>
    </mime-mapping>
    
  2. 如下所示更改bean中的return语句: -

    return new DefaultStreamedContent(new ByteArrayInputStream(dr.getImage()),"image/svg+xml");