myfaces-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Werner Punz <werner.p...@gmail.com>
Subject Ann: MyFaces Ajax Fileupload and how to use it
Date Fri, 30 Jul 2010 10:58:51 GMT
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) A small patch on the myfaces side to detect the partoal fileupload 
case as ajax cycle

b) 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 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:

http://www.pastebin.org/432572
http://www.pastebin.org/432586 for the relevant bean.
If your fileupload is correctly configured this code should work out of 
the box.




Werner




Mime
View raw message