【问题标题】:multipart/form-data enctype ignored忽略多部分/表单数据编码类型
【发布时间】:2015-02-25 09:37:10
【问题描述】:

我已将表单定义为 multipart/form-data enctype。当我按下命令按钮时,请求不会以“multipart/form-data”内容类型发送。

<h:form id="form" method="post" enctype="multipart/form-data">

     <input type="file" ></input>

     <p:commandButton id="save" icon="saveBt" value="#{msgs.saveBt}" ... />

</h:form>

在开发者工具控制台中,我可以看到 Content-Type 为 application/x-www-form-urlencoded;字符集=UTF-8。

我正在使用 JSF 2.1 和 Primefaces 5.1。

谢谢

【问题讨论】:

  • 你可以升级 JSF 吗? “我没有使用 &lt;p:fileUpload&gt;,因为它不适用于 ajax 和设置为“simple”的模式属性”。这实际上是必需的 - mode="simple" 始终需要 ajax="false"(这是一种指定的行为)。
  • 我想你建议我升级到 2.2 因为 h:inputFile。我正在使用 JBoss 7.1(随 JSF 2.1 提供),我不确定是否可以升级到 JSF 2.2
  • 我也没有使用 JBoss。因此,我不确定它是否与 JSF 2.2 兼容(这毕竟取决于 Servlet 版本。JSF 2.2 至少需要 Servlet 3.0,主要是因为&lt;h:inputFile&gt;)。如果 JBoss (7.1) 版本支持 Servlet 3.0,您可以升级到 JSF 2.2。
  • 感谢您的想法。可能可以将 JBoss 7.1 升级到 JSF 2,2,但我不确定我正在开发的客户端是否允许升级它。

标签: jsf-2 primefaces multipartform-data enctype


【解决方案1】:

您正在使用 JSF 和 Primefaces,因此请使用 &lt;p:fileUpload&gt; 而不是 &lt;input type="file"&gt;。以official demo 为例。

【讨论】:

  • 感谢您的回复。我没有使用 因为它不适用于 ajax 和模式属性设置为“简单”。事实上,我已经尝试过@BalusC 在balusc.blogspot.com.es/2009/12/… 中解释的内容。但同样,它不适用于 ajax。我已经看到问题是因为当请求是 ajax 类型时,表单没有以“multipart/form-data”内容类型提交。
  • 如果您使用&lt;h:commandButton&gt; 代替&lt;p:commandButton&gt; 是否有效?如果您还没有阅读,请查看this thread 了解更多信息。
  • 再次感谢。是的,我以前读过它。使用 . 的结果相同
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多