This change destroy behaviour of old Icefaces apps with error
SEVERE: Error Rendering View[/zad.jspx]
java.lang.IllegalStateException: Component ID zadFrm:ice_fileEntry_encodedURL has already been found in the view.
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:987)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:971)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:971)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:971)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:971)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:971)
at com.sun.faces.util.Util.checkIdUniqueness(Util.java:971)
at com.sun.faces.application.view.FaceletPartialStateManagementStrategy.saveView(FaceletPartialStateManagementStrategy.java:461)
at com.sun.faces.application.StateManagerImpl.saveView(StateManagerImpl.java:89)
at javax.faces.application.StateManager.getViewState(StateManager.java:593)
at com.icesoft.faces.context.CompatDOMPartialViewContext$WriteViewStateMarkup.write(CompatDOMPartialViewContext.java:65)
at org.icefaces.impl.util.DOMUtils.printNode(DOMUtils.java:378)
at org.icefaces.impl.util.DOMUtils.printNode(DOMUtils.java:355)
at org.icefaces.impl.util.DOMUtils.printNodeCDATA(DOMUtils.java:286)
at org.icefaces.impl.context.DOMPartialViewContext.processPartial(DOMPartialViewContext.java:262)
at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1896)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:425)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
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.