如何在GlassFish 3.1.1上运行的应用程序中使用multipart / form-data编码

时间:2012-01-31 04:56:41

标签: file-upload jsf-2 primefaces glassfish-3

我有一个在GlassFish 3.1.1下运行的JSF 2.0应用程序,我希望在PrimeFaces 3.0.1中使用新的FileUpload组件,这需要将表单数据编码为multipart/form-data,如在:

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

但是,只要我将上面的enctype属性添加到我的表单中,它就不再起作用了 - 从不调用绑定到我的提交和取消按钮的bean方法。

我确实找到了reference to an issue与Mojarra(我相信的GlassFish的一部分)和多部分/表格数据编码,但它已经差不多两年了 - 当然我现在必须解决这个问题。在GlassFish下使用这种类型的编码需要做些什么,还是需要更新的东西?如果还有一个已知问题,那么罪魁祸首是什么?

1 个答案:

答案 0 :(得分:0)

当前的Glassfish 3.1.2 b23中有一个回归,它是作为以前的一些bug修复而引入的,所以我认为它仍然有效。

  

可能原因的详情在下面和玻璃鱼问题中   票http://java.net/jira/browse/GLASSFISH-18444但它可以   由其他gf 3.1.2用户评论总结“我现在正在   使用Magnolia CMS(http://www.magnolia-cms.com/)体验这一点   每个单独的表格停止在glassfish 3.1.2中使用   以下例外......“

     

我在本地部署了一个3.1版本的glassfish,我测试过了   readLine()问题与表单multipart不存在,所以会   建议恢复到2.1存档版本的glassfish而不是   3.1.2 b23。

     

http://java.net/jira/browse/GLASSFISH-18444
  “在glassfish 3.1中   用来工作和打印表格数据(的内容   调用getParameter()后仍然可以使用InputStream。这个   玻璃鱼3.1.2的变化可能是因为变化了   GLASSFISH-16740。

     

这些更改将导致使用的Web应用程序出现重大问题   multipart formdata,但还没有使用getParts()方法   检索数据,但一些专有方法。任何电话   解析文件之前的getParameter()将导致解析   multipart formdata失败。我目前正在经历这个问题   每一个单一的Magnolia CMS(http://www.magnolia-cms.com/)   表格在glassfish 3.1.2中停止工作,但有以下例外:“

     似乎这个问题与这些问题有关   部署了GLASSFISH 3.1.2;

     

http://java.net/jira/browse/GLASSFISH-18453
  http://java.net/jira/browse/GLASSFISH-18444
  http://java.net/jira/browse/GLASSFISH-16740

     

“与getParameter()/ getPart()不相容的重大更改”影响   版本:3.1.2_b23

     

因此,这会影响网站中有文件上传的任何表单   多部分表单组件。我可以在本地复制这个问题   glassfish 3.1.2_b23。