1
votes

I have a JSF 2.0 application running under GlassFish 3.1.1, and I wish to use the new FileUpload component in PrimeFaces 3.0.1, which requires that form data be encoded as multipart/form-data, as in:

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

However, as soon as I add the above enctype attribute to my form, it no longer works - the bean methods tied to my submit and cancel buttons are never invoked.

I did find a reference to an issue with Mojarra (part of GlassFish I believe) and multipart/form-data encoding, but it's almost two years old - certainly it must have been addressed by now I figure. Is there something else I need to do to use this type of encoding under GlassFish, or something that needs to be updated? And if there is a known issue remaining, what is the culprit?

1
This question has indeed been answered too many times :)BalusC
Found a reference to Unable to get "multipart/form-data" request parameters by HttpServletRequest#getParameter on java.net. Apparently this was only fixed last month and sounds like it should be included in the forthcoming GlassFish 3.1.2 update. (I usually try to avoid the bleeding edge - not sure how I ended up on it.)Kevin Rahe
I think you didn't understood the answers in the duplicates. Your problem is that you forgot registering the filter or did not do it properly. This Glassfish bug is completely unrelated. PrimeFaces filter doesn't use the Servlet 3.0 methods. It uses Apache Commons FileUpload. PrimeFaces also doesn't use any mechanisms of the new upcoming JSF 2.2 <h:inputFile> component.BalusC

1 Answers

0
votes

There is a regression in the current Glassfish 3.1.2 b23, that was introduced as a fix to some previous bug, so I think its still valid.

Details of the probable cause are below and in the glassfish issue ticket http://java.net/jira/browse/GLASSFISH-18444 but it can be summarised by this other gf 3.1.2 user comment "I'm currently experiencing this with the Magnolia CMS (http://www.magnolia-cms.com/) where every single form stopped working in glassfish 3.1.2 with the following exception..."

I deployed a 3.1 version locally of glassfish and I have tested that the readLine() problem is not there with form multipart, so would suggest reverting to the 3.1 archived version of glassfish instead of 3.1.2 b23.

http://java.net/jira/browse/GLASSFISH-18444
"In glassfish 3.1 this used to work and print out the form data (the content of the InputStream could still be used after calling getParameter()). This has changed in glassfish 3.1.2 probably because of the changes for GLASSFISH-16740.

These changes will cause major problems in web applications that use multipart formdata, but do not yet use the getParts() method to retrieve the data, but some proprietary method. Any call to getParameter() before the files are parsed will cause the parsing of the multipart formdata to fail. I'm currently experiencing this with the Magnolia CMS (http://www.magnolia-cms.com/) where every single form stopped working in glassfish 3.1.2 with the following exception:"

it seems that the issue is related to these open issues on the deployed 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

"Incompatible breaking changes to getParameter() / getPart()" Affects Version/s: 3.1.2_b23

So this is affecting any forms in the site that have file upload multipart form components. I can replicate this problem locally on a glassfish 3.1.2_b23.