好的,这个小问题让我发疯了,我得到了这个渲染条件来在数据表中显示图像而不是文本,我有一种从文件中获取流内容的方法。
由于某种原因我不知道,该方法被bean调用了两次,我将变量imageName传递给第一次获取流式内容的方法是可以的,因为输入了if,但是第二次变量变为“”我没有得到图像。我知道这是因为第二次输入 else 语句并显示了 missing.png 图像......
我正在使用运行 mojarra 2.1.9 和 primefaces 3.5 的 GlassFish 3.1.2
XHTML:
<p:column headerText="Respuesta">
<p:graphicImage width="200" height="200" value="#{viewFormResponseController.getImageFromPath(viewFormResponse.itemResponse)}" rendered="#{viewFormResponse.itemType == 'FIRMA'}"></p:graphicImage>
<h:outputText value="#{viewFormResponse.itemResponse}"></h:outputText>
</p:column>
豆方法
public StreamedContent getImageFromPath(String imageName) throws FileNotFoundException{
System.out.println("image from path");
String pathNoImage = "C:\\DataTraceServer\\missing.png";
if(imageName != null && viewFormResponses != null && !imageName.equals("")){
System.out.println(imageName);
Device device;
try {
device = selectedFormResponse.getDevice();
String path = "C:\\DataTraceServer\\"+selectedUser.getUsername()+"\\"+device.getImei()+"\\multimediaFile\\"+imageName;
System.out.println(path);
String contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(path);
return new DefaultStreamedContent(new FileInputStream(path), contentType);
} catch (FileNotFoundException ex) {
System.out.println("exception");
Logger.getLogger(ViewFormResponseController.class.getName()).log(Level.SEVERE, null, ex);
String contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(pathNoImage);
return new DefaultStreamedContent(new FileInputStream(pathNoImage), contentType);
}
} else {
System.out.println("else");
String contentType = FacesContext.getCurrentInstance().getExternalContext().getMimeType(pathNoImage);
return new DefaultStreamedContent(new FileInputStream(pathNoImage), contentType);
}
}
我已经在 Stackoverflow 中阅读了一些类似的问题,但它们并不清楚,而且它们看起来不像我的问题,所以请帮助我已经研究了几个小时......