我想在上传后通过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>
有什么想法吗?
答案 0 :(得分:1)
a4j:mediaOutput
需要不同的请求参数,以免被缓存。为此,我更喜欢使用来自应用程序范围的托管bean的最新时间戳。这就像克服js和css文件的浏览器缓存一样,方法是将timestamp参数附加到他们的url。
<a4j:mediaOutput ... >
<f:param value="#{appMB.timeStamp}" name="time" />
</a4j:mediaOutput>