Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.0.0-beta-2
-
None
-
WinXP, IE 8, Firefox 3.6, Tomcat 5.5, Spring Web Flow 2.3.0, Mojarra 2.0.2-FCS
Description
When Trinidad runs inside Mojarra and Sping Web Flow (SWF) a Nullpointerexception occurs when the "redirect after post" GET request is executed for a postBack:
Caused by: java.lang.NullPointerException
at java.io.StringReader.<init>(StringReader.java:33)
at org.apache.myfaces.trinidadinternal.renderkit.core.CoreResponseStateManager._restoreSerializedView(CoreResponseStateManager.java:279)
at org.apache.myfaces.trinidadinternal.renderkit.core.CoreResponseStateManager.getTreeStructureToRestore(CoreResponseStateManager.java:146)
at org.apache.myfaces.trinidadinternal.application.StateManagerImpl.restoreView(StateManagerImpl.java:584)
at org.springframework.faces.webflow.FlowViewStateManager.restoreView(FlowViewStateManager.java:195)
at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:131)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:430)
at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:143)
at org.springframework.faces.webflow.FlowViewHandler.restoreFlowView(FlowViewHandler.java:144)
at org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:83)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
at org.apache.myfaces.trinidadinternal.application.ViewHandlerImpl.restoreView(ViewHandlerImpl.java:242)
at org.springframework.faces.webflow.FlowViewHandler.restoreFlowView(FlowViewHandler.java:144)
at org.springframework.faces.webflow.FlowViewHandler.restoreView(FlowViewHandler.java:83)
at org.springframework.faces.webflow.JsfViewFactory.getView(JsfViewFactory.java:105)
at org.springframework.webflow.engine.ViewState.resume(ViewState.java:193)
at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
The reason is that in "String stateString = _getStateString(external);" null is returned (because the GET request of SWF doesn't contain the request parameter "javax.faces.ViewState").
CoreResponseStateManager._restoreSerializedView should become null save by putting a "if (stateString != null) {" before the "StringReader sr = new StringReader(stateString);".
Is it possible to restore the view if we don't have a request parameter "javax.faces.ViewState" so that the component tree doesn't need to be built again in the GET request when emedded into SWF?