ReRender上传的图片(a4j:mediaOutput)

时间:2014-07-05 23:30:03

标签: ajax jsf primefaces richfaces ajax4jsf

我想在上传后通过ajax(在a4j:mediaOuput标签中)显示上传的图片,但我无法重新呈现a4j:mediaOutput标记:

<h:form enctype="multipart/form-data"> <a4j:jsFunction name="refreshPic" reRender="picHolder" /> <p:fileUpload mode="advanced" fileLimit="1" multiple="false" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" auto="true" fileUploadListener="#{createSopController.fileChanged}" oncomplete="refreshPic()" /> <a4j:outputPanel id="picHolder"> <a4j:mediaOutput id="pic" element="img" cacheable="false" createContent="#{sessionImageBean.paint}" value="#{createSopBean.imageId}" mimeType="#{createSopBean.sop.mimeType}" width="672" height="1005"/> </a4j:outputPanel> </h:form>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

a4j:mediaOutput需要不同的请求参数,以免被缓存。为此,我更喜欢使用来自应用程序范围的托管bean的最新时间戳。这就像克服js和css文件的浏览器缓存一样,方法是将timestamp参数附加到他们的url。

不过,在渲染图像时,您不需要使用此参数进行任何操作。

<a4j:mediaOutput ... >
    <f:param value="#{appMB.timeStamp}" name="time" />
</a4j:mediaOutput>