我有一个包含一些普通表单输入字段的表单,然后是一个文件上传选项。但是,文件上传是可选的。当用户选择文件并单击上传按钮时,表单enctype
必须设置为multipart/form-data
,但如果用户未添加文件但只需点击提交,则必须设置enctype
至application/x-www-form-urlencoded
这是默认值。如果未正确设置enctype
,我会在提交时收到错误。我已尝试动态更改enctype
作为其按下的上传按钮,但似乎无法正常工作。
我的页面:
<h:form id="master">
... some fields and other stuff
<p:fileUpload value="#{controller.file}" mode="simple"/>
<p:commandButton
onstart="document.getElementById('master').enctype = 'multipart/form-data';"
value="Upload" ajax="false" actionListener="#{controller.uploadFile}" />
<p:commandButton value="Submit" id="submit"
actionListener="#{controller.buttonSubmit}"
validateClient="true" ajax="false"/>
</h:form>
当我尝试上传文件时使用此设置我收到错误:
UT010016: Not a multi part request
如果我将multipart/form-data
移至h:form
标记,则可以上传文件,但我无法提交该页面。有没有办法在同一页面上传文件和处理普通表单提交?或者也许是另一种方式的建议。
答案 0 :(得分:0)
可能你正在使用WlidFly 8。 其他应用程序服务器(JBoss AS 6.1)对我来说很好,有类似的例子。
看看这个https://code.google.com/p/primefaces/issues/detail?id=6925