【发布时间】:2013-11-19 21:24:21
【问题描述】:
我一直在尝试使用 p:uploadFile 上传图像,并且第一次可以正常工作,但是在第一次上传文件后它不会更新 p:graphicImage,但是如果我重新加载页面,graphicImage 的值就可以了并显示图像。所以,我认为这是 primefaces uploadFile 组件的问题,但我不确定。
我的 xhtml 是这样的:
<h:form id="formNuevo" size="150%" enctype="multipart/form-data">
<h:outputLabel value="Diseño Neumatico: *" />
<p:fileUpload fileUploadListener="#{serviciosVentanaDiseno.manejarUploadedFile}" mode="advanced" auto="true" sizeLimit="9000000000" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" update="mensajes graficImage"/>
<p:graphicImage id="graficImage" styleClass="disenoNeumatico" value="#{serviciosVentanaDiseno.streamedContentImagen}" ajax="true"/>
</h:form>
我的 bean 是一个 @SessionScoped bean,它就在这里:
public void manejarUploadedFile(FileUploadEvent event) {
UploadedFile uploadedFile = (UploadedFile)event.getFile();
try {
diseno.setImagen(uploadedFile.getContents());
streamedContentImagen = new DefaultStreamedContent(new ByteArrayInputStream(diseno.getImagen()));
} catch (IOException e) {
//log error
}
}
public StreamedContent getStreamedContentImagen() {
return streamedContentImagen;
}
public void setStreamedContentImagen(StreamedContent streamedContentImagen) {
this.streamedContentImagen = streamedContentImagen;
}
【问题讨论】:
-
这只是一个猜测,但浏览器可能正在缓存图像。尝试将graphicImage组件的缓存属性设置为false:
-
我将提交我的评论作为答案,以便为其他人解决问题。
标签: primefaces