我无法在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()));
}
}
}
这是我在浏览器控制台中看到的。
答案 0 :(得分:2)
在web.xml中添加MIME类型,如下所示: -
<mime-mapping>
<extension>xhtml</extension>
<mime-type>image/svg+xml</mime-type>
</mime-mapping>
如下所示更改bean中的return语句: -
return new DefaultStreamedContent(new ByteArrayInputStream(dr.getImage()),"image/svg+xml");