使用Primefaces fileUpload在同一表单上处理表单数据和文件上载

时间:2014-08-25 11:45:42

标签: jsf file-upload jsf-2 primefaces

我有一个包含一些普通表单输入字段的表单,然后是一个文件上传选项。但是,文件上传是可选的。当用户选择文件并单击上传按钮时,表单enctype必须设置为multipart/form-data,但如果用户未添加文件但只需点击提交,则必须设置enctypeapplication/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标记,则可以上传文件,但我无法提交该页面。有没有办法在同一页面上传文件和处理普通表单提交?或者也许是另一种方式的建议。

1 个答案:

答案 0 :(得分:0)

可能你正在使用WlidFly 8。 其他应用程序服务器(JBoss AS 6.1)对我来说很好,有类似的例子。

看看这个https://code.google.com/p/primefaces/issues/detail?id=6925