jsf中的一个最大化文件上传



我想在不发布整个表单的情况下进行文件上传。文件上传工作正常,但整个表单都已提交。当验证正确时,此操作正常。但是,当体育项目的必填字段为空时,上传将不起作用,并返回错误消息(缺少必填字段)所以我尝试用ajax上传文件(ajax=true)。但是上传什么也没做。

我尝试了一个围绕bu的工作,将文件上传和其他领域以不同的形式。这是可行的,但结果是,在上传文件时,您在其他字段中更改的数据将被忽略。

有什么建议吗?

这是我使用的代码:

<t:inputFileUpload id="fileupload" value="#{prospectDetail.upFile}" size="50" />
<h:outputLabel for="description" value="#{msg.prospectdetail_description}"/>
<mw:inputText id="description" size="40" value="#{prospectDetail.fileDescription}" />
<p:commandButton styleClass="button" value="#{msg.common_upload}" action="#{prospectDetail.upload}" ajax="false" process="@form" onbegin="busyPopup.show()" oncomplete="busyPopup.hide();"/>

通过第一个版本的XMLHttpRequest(JavaScript中的核心Ajax请求控制器对象)上传文件是不可能的。XMLHttpRequest的第二个版本支持它,但<p:commandButton>没有实现它(并且目前对浏览器的支持很低)。

既然您似乎已经在使用PrimeFaces了,为什么不直接使用它自己的<p:fileUpload>组件呢?单次上传甚至自动上传的例子都应该为你做这件事(在添加PrimeFaces的文件上传过滤器后,不要忘记从web.xml中删除MyFaces扩展过滤器!)。PrimeFaces的<p:fileUpload>将在可用时自动使用XHR2文件上传。

我尝试了一个围绕bu的工作,将文件上传和其他字段以不同的形式。这是可行的,但结果是,在上传文件时,您在其他字段中更改的数据将被忽略

如果您将bean放在视图范围而不是请求范围中,并从操作方法返回nullvoid,那么这应该可以工作。

最新更新