【问题标题】:Why can't I update a p:graphicImage twice after upload a file with p:uploadFile为什么我不能在使用 p:uploadFile 上传文件后更新 p:graphicImage 两次
【发布时间】: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


【解决方案1】:

尝试将graphicImage组件的缓存属性设置为false: &lt;p:graphicImage cache="false"

【讨论】:

    【解决方案2】:

    更改范围@SessionScoped 然后&lt;p:graphicImage cache="false"&gt;

    【讨论】:

    • 能否请您详细说明您的答案,添加更多关于您提供的解决方案的描述?
    猜你喜欢
    • 2011-04-23
    • 2011-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-06-09
    • 2011-11-27
    • 1970-01-01
    相关资源
    最近更新 更多