rich:dataTable crashes on postback when columns are dynamically added when partial state
saving is enabled
----------------------------------------------------------------------------------------------------------
Key: RF-11681
URL:
https://issues.jboss.org/browse/RF-11681
Project: RichFaces
Issue Type: Bug
Security Level: Public (Everyone can see)
Affects Versions: 4.0.0.Final
Environment: Mojarra 2.1.3, 2.1.4, JBoss AS 6.0, JBoss AS 6.10
Reporter: henk de boer
When columns are dynamically added to a rich:dataTable, a crash will occur after a
postback:
{noformat}
java.lang.NullPointerException
at
com.sun.faces.application.view.StateManagementStrategyImpl$4.visit(StateManagementStrategyImpl.java:331)
at
com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
at org.richfaces.component.UIDataAdaptor.visitTree(UIDataAdaptor.java:1235)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIForm.visitTree(UIForm.java:344)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1600)
at
com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:326)
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:188)
at
com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
at
com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:452)
at
com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:303)
at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:192)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
{noformat}
The crash happens if the columns are added either in a backing bean or from another
component (in both cases in a PreRenderView event handler, which is a save moment to
modify the component tree).
If instead of a {{rich:dataTable}} an {{h:dataTable}} is used, the code works as expected.
With the {{rich:dataTable}}, the statemanager tries to find an ID that looks e.g. like:
{{j_idt98:j_idt99:j_id2}}, but in the rendered markup only IDs like
{{j_idt98:j_idt99:0:j_id2}} and {{j_idt98:j_idt99:0:j_id3}} are found. In the state map
however only IDs of the form {{j_idt98:j_idt99:0:j_id3}} and {{j_idt98:j_idt99:0:j_id4}}
are there.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira