【问题标题】:javax.servlet.ServletException the request doesn't contain a multipart/form-data or multipart/mixed streamjavax.servlet.ServletException 请求不包含 multipart/form-data 或 multipart/mixed 流
【发布时间】:2015-08-27 19:07:25
【问题描述】:

我有下面的表格,它通过<h:inputFile><f:ajax> 上传文件。

<h:form enctype="multipart/form-data">
    <h:inputFile id="file" value="#{bean.file}" />
    <h:commandButton value="Upload" action="#{bean.upload}">
        <f:ajax execute="file" render="file" />
    </h:commandButton>
</h:form>

当我提交它时,我会收到带有以下错误信息的 JavaScript 警报:

serverError: class javax.servlet.ServletException 请求不包含 multipart/form-data 或 multipart/mixed 流,内容类型标头为 application/x-www-form-urlencoded;charset=UTF-8

这个问题有什么解决办法吗?我正在使用 Mojarra 2.2.11。

【问题讨论】:

  • 您在嵌套表单吗?
  • 我只有一张表格。

标签: ajax jsf file-upload jsf-2.2 mojarra


【解决方案1】:

我复制了它。这是 Mojarra 中的一个错误,在 2.2.9 中作为 issue 3129 修复的副作用引入。您的问题已报告为issue 3765。基本上:自 Mojarra 2.2.9 以来,使用 ajax 上传文件已被破坏,并且没有解决方法(至少在代码中没有破解)。

目前,您需要降级到 Mojarra 2.2.8,直到他们发布带有修复程序的版本。

【讨论】:

  • 是的,降级 Mojarra 似乎可行。还有一个问题:我单击浏览按钮并选择要上传的文件。然后我点击上传按钮,当文件上传时,我看到标签No file selected。也许文件被传输到托管bean?这是正常行为吗?
  • 如果您重新渲染文件输入,确实会发生这种情况。然后它就像重新初始化为默认值一样。如果您不想要这个,请更改 &lt;f:ajax render&gt;
猜你喜欢
  • 2017-01-14
  • 2016-01-31
  • 2014-10-31
  • 1970-01-01
  • 2014-10-31
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多