Primefaces 为什么可以';在使用p:uploadFile上载文件后,我会更新p:graphicImage两次

Primefaces 为什么可以';在使用p:uploadFile上载文件后,我会更新p:graphicImage两次,primefaces,Primefaces,我一直在尝试上载一个带有p:uploadFile的图像,第一次它工作正常,但是在第一次上载文件后,它不会更新p:graphicImage,但是如果我重新加载页面,graphicImage的值就正常了,并且显示了图像。因此,我认为primefaces uploadFile组件存在问题,但我不确定 我的xhtml是这样的: <h:form id="formNuevo" size="150%" enctype="multipart/form-data"> <h:outpu

我一直在尝试上载一个带有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>

尝试将graphicImage组件的缓存属性设置为false:
更改范围
@SessionScoped
然后

这只是猜测,但浏览器可能正在缓存图像。尝试将graphicImage组件的“缓存”属性设置为false:我将提交我的评论作为答案,以便它可以为其他人解决问题。请您详细说明您的答案,并添加有关您提供的解决方案的更多描述,好吗?
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;
}