NullPointerException when removing node in tree
jeffzzang Nov 28, 2007 3:46 PMI am using <rich:tree > with a few nested <rich:treeNodesAdaptors> and when I remove one of the nodes from the tree and then re-render the tree, I get the following exception:
java.lang.NullPointerException
at org.richfaces.model.StackingTreeModel.walk(StackingTreeModel.java:361)
at org.richfaces.model.StackingTreeModel.walkModel(StackingTreeModel.java:457)
at org.richfaces.component.UITree.walkModel(UITree.java:357)
at org.richfaces.component.state.TreeState.visitNodes(TreeState.java:200)
at org.richfaces.component.state.TreeState.expandNode(TreeState.java:262)
at org.richfaces.component.state.events.ExpandNodeCommandEvent.execute(ExpandNodeCommandEvent.java:48)
at org.richfaces.component.state.events.TreeStateCommandEvent.processListener(TreeStateCommandEvent.java:59)
at org.richfaces.component.UITree.broadcast(UITree.java:489)
at org.ajax4jsf.component.UIInclude.broadcast(UIInclude.java:138)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:184)
at org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:162)
at org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:350)
at org.apache.myfaces.lifecycle.InvokeApplicationExecutor.execute(InvokeApplicationExecutor.java:32)
at org.apache.myfaces.lifecycle.LifecycleImpl.executePhase(LifecycleImpl.java:95)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:70)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:139)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
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:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)
The way I remove it is to see which "row" was removed, remove it from the underlying collection, and then repopulate the underlying Collection for the outer-most treeNodesAdaptor. Anyone have any ideas?