わかりました、この小さな問題は私を夢中にさせています。データテーブルにテキストではなく画像を表示するようにレンダリングされた状態になりました。ファイルからストリーミングされたコンテンツを取得する方法があります。
なんらかの理由で、メソッドは 2 回呼び出された Bean です。ストリームされたコンテンツを取得するメソッドに変数 imageName を渡しています。最初は if に入るので問題ありませんが、2 回目の変数は "" になります。そして、私はイメージを得ていません。2回目に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でいくつかの同様の質問を読みましたが、それらは明確ではなく、私の問題のようには見えません。