【问题标题】:Handling form data and file upload on same form using Primefaces fileUpload使用 Primefaces fileUpload 在同一表单上处理表单数据和文件上传
【发布时间】:2014-08-25 11:45:41
【问题描述】:

我有一个包含一些普通表单输入字段和一个文件上传选项的表单。但是,文件上传是可选的。当用户选择一个文件并单击上传按钮时,表单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 标记,那么我可以上传文件,但我无法提交页面。有没有办法在同一页面上上传文件并处理正常的表单提交?或者也许是另一种方法的建议。

【问题讨论】:

  • 尝试使用 enctype="multipart/form-data" 将 p:fileUpload 放在不同的 h:form 中。这是我实现这一目标的唯一方法。
  • “我不能提交”是什么意思?当你尝试时会发生什么?按道理,您可以尝试使用新的 servlet API 的 Part 接口方法从多部分请求中提取表单数据
  • 我得到与UT010016: Not a multi part request提到的相同的错误

标签: jsf file-upload jsf-2 primefaces


【解决方案1】:

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

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

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 2020-11-14
相关资源
最近更新 更多