]
Lutz Ulrich updated RF-13452:
-----------------------------
Affects Version/s: 4.3.5
UIDataAdaptor must not register as listener for PostAddToViewEvent in
its constructor
-------------------------------------------------------------------------------------
Key: RF-13452
URL:
https://issues.jboss.org/browse/RF-13452
Project: RichFaces
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: compatibility
Affects Versions: 4.3.4, 4.3.5
Environment: Mojarra 2.1.?? - 2.1.28
Reporter: Lutz Ulrich
Labels: UIDataAdaptor, UIDataTable, dynamical-add
Fix For: 5-Tracking
Whenever a component which is based on {{org.richfaces.component.UIDataAdaptor}} is added
dynamically, NPE occurs in the next RESTORE_VIEW Phase when using Mojarra 2.1.x.
My first guess was, that this would be an error in Mojarra (issue 2152, see
https://java.net/jira/browse/JAVASERVERFACES-2152?page=com.atlassian.jira...
),
which occurs whenever a sub-class of {{UIComponent}} registers itself as
{{javax.faces.event.SystemEventListener}} for
{{javax.faces.event.PostAddToViewEvent}} in ist constructor, just like {{UIDataAdaptor}}
does.
Now, Manfred Riem of Mojarra argues (in the very issue named above), that registering for
PostAddToView in the constructor is a design flaw in itself.
Note that the error occurs with every UIComponent which is added dynamically and which
registers itself as PostAddToView listener in its constructor. For the Mojarra issue, I
provided a simple component which extends the standard JSF HtmlOutputText and registers
itself in its constructor, too. Baam - same error. So maybe more components of RichFaces
are affected - not just those based on {{UIDataAdaptor}}.
For completion, here is a stack trace:
{quote}
Schwerwiegend: java.lang.NullPointerException
at
javax.faces.component.UIComponent$ComponentSystemEventListenerAdapter.processEvent(UIComponent.java:2526)
at javax.faces.event.SystemEvent.processListener(SystemEvent.java:106)
at
com.sun.faces.application.ApplicationImpl.processListeners(ApplicationImpl.java:2163)
at
com.sun.faces.application.ApplicationImpl.invokeComponentListenersFor(ApplicationImpl.java:2111)
at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:289)
at com.sun.faces.application.ApplicationImpl.publishEvent(ApplicationImpl.java:247)
at
javax.faces.component.UIComponentBase.publishAfterViewEvents(UIComponentBase.java:2203)
at javax.faces.component.UIComponentBase.doPostAddProcessing(UIComponentBase.java:1885)
at javax.faces.component.UIComponentBase.setParent(UIComponentBase.java:405)
at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2637)
at javax.faces.component.UIComponentBase$ChildrenList.add(UIComponentBase.java:2609)
at
com.sun.faces.application.view.FaceletPartialStateManagementStrategy.restoreDynamicAdd(FaceletPartialStateManagementStrategy.java:421)
at
com.sun.faces.application.view.FaceletPartialStateManagementStrategy.restoreDynamicActions(FaceletPartialStateManagementStrategy.java:247)
at
com.sun.faces.application.view.FaceletPartialStateManagementStrategy.restoreView(FaceletPartialStateManagementStrategy.java:570)
at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:138)
at
com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
at
com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:653)
at
com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:142)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:301)
at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:301)
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)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
{quote}
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: