For Portlets, the code was using, if present, the javax.faces.encodedURL hidden input, which h:form renders as ExternalContext.encodePartialActionURL, if that's different from ExternalContext.encodeActionURL. Which probably means that encodePartialActionURL should always be right when we're using Ajax, regardless if using Portlets or not. Had to render on the server the URL with the ice.fileEntry.ajaxResponse param, and feed that to encodePartialActionURL, since you can't assume you can append params to what you get out of encodePartialActionURL, since some Portlet containers return a block box string from it.
Added code on the server side to look for the parameter and only process the multipart if the parameter was set.
Then, had to address ICE-6448, where we support javascript disabled file uploads, which means that we still need to support uploads where we don't set the parameter in the javascript. This is because there's no means to override the rendered form action from the server side, short of a major kludge.
So, introduced the context parameter org.icefaces.ace.fileEntry.requireJavascript with default value true. This means not requiring javascript will allow for ignoring the lack of the parameter. So apps can either mix upload components xor support javascript disabled.
Wiki page for the new context-param:
http://www.icesoft.org/wiki/display/ICE/fileEntry.requireJavascript
Since FileEntry posts back to the same URL as the page it is on, it should be possible to record this URL and only wrap those matching incoming requests. A future version of FileEntry can make use of Servlet 3.0 and also not wrap the request when Servlet 3.0 API is available.