JSF Myfaces issues
- All
- Java
- Technology
- JSF
- MyFaces
MyFaces 2.0 Ajax Fileupload
Hello, as some people might have noticed I recently integrated the Ajax fileupload into our trunk (2.0.2-SNAPSHOT), I also gave the code to the JSF EG so that it might be part of JSF 2.1 or the base for a similar functionality. The code changes itself are:
- A small patch on the MyFaces side to detect the partoal fileupload case as Ajax cycle
- Extensions to our scripts which currently are only enabled in dev mode (it still is up for discussion whether we should enable it for prod or not since they are non standard)
Here is what you have to do:
First turn your server on into development mode via:
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
Then use the code like I do in my working testcase: http://www.pastebin.org/432572
the important thing is following line:
<script type="text/javascript">
myfaces.config = myfaces.config || {};
myfaces.config["transportAutoSelection"] = true;
</script>
This enables the auto transport selection, which switches to an IFrame submit in case of a file uploading form submit. This switch cannot be enabled by default because it would break the spec requirements that an xhr post has to be performed at all costs.
Also XHR level2 is out of the question for now because it is only supported by the newest browsers.
After that it is straight forward, you can use the fileupload component from Tomahawk 2 (you need to checkout the Tomahawk trunk) for instance, it should work straight out of the box.
I also did a servlet 3.0 fileupload component for prototyping but the code is too flakey yet (mainly due to spec deficits less due to the component itself) and I cannot really commit it into the core. Instead I made sure that the standard fileupload components perform ok. So it is ready to be used at least from my point of view, but have in mind all this will break compatibility to Mojarra if you use it.
So using it means you are bound to MyFaces, which is something I do not particularily recommend (hence also donating the prototype code to the EG, I want something like this in the spec)
Here again is the pastebin to all relevant files:
If your fileupload is correctly configured this code should work out of the box.Posted at 02:12PM Jul 30, 2010 by Werner Punz in JSF | Comments[0]