PrimeFaces p:fileUpload Ajax

时间:2013-06-12 18:57:47

标签: ajax jsf file-upload primefaces

我对PrimeFaces的p:fileUpload更新有一个奇怪的问题。我上传了一张图片并将其保存在数据库中,这已经有效了。 这是p:fileUpload的代码。

<p:fileUpload fileUploadListener="#{playerController.handleFileUpload}" 
        allowTypes="/(\.|\/)(gif|jpe?g|png)$/"
        update="messagePanel preview" />

上传后,我会渲染显示图片的h:panelGroup

<h:panelGroup id="preview">
    <p:graphicImage value="#{facesContext.externalContext.contextName}/showProfileImage?&amp;preview=true" alt="#{playerController.selected.image.name}" />
    <h:outputText value="#{playerController.selected.image.name}" />
</h:panelGroup>

在谷歌浏览器中,一切都运行良好,但在Firefox和Internet Explorer中,当我上传图像时,图像无法呈现。旧图像仍然出现。刷新页面后,新图像就在那里。

在FireBug中我收到此消息:“NS_ERROR_NOT_IMPLEMENTED:组件返回失败代码:0x80004001(NS_ERROR_NOT_IMPLEMENTED)[nsIDOMLSProgressEvent.input]”

我将所有浏览器更新到最新版本,我使用的是PrimeFaces 3.5。

2 个答案:

答案 0 :(得分:0)

在代码中

&preview=true
之前有一个额外的空格。我在这里使用 * * *强调它:

<p:graphicImage value="#{facesContext.externalContext.contextName}/showProfileImage?*****&amp;preview=true" alt="#{playerController.selected.image.name}"/>

删除空格并尝试一下。可能是FF和IE不喜欢这个空间而且Chrome很容易

答案 1 :(得分:0)

您是否尝试删除项目中使用的模板/ css组件?我有同样的问题,我注意到,如果我删除所有这些组件,它工作正常。