I am using <p:tree>. and trying to use <p:ajax> to detect the node selected and excecute action. This is my actual JSF code:
<p:tree id="treeDot" value="#{beanRequest.rootDot}" var="node" selectionMode="single"
nodeSelectListener="#{beanRequest.clt}" >
<p:ajax event="select" listener="#{beanRequest.clientSelected}" />
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
The server side method:
//...
private Client clt;
public void clientSelected(NodeSelectEvent event) {
//...
}
//...
I get the following exception :
8 oct. 2012 17:30:01 com.sun.faces.context.PartialViewContextImpl processPartial
INFO: java.lang.NullPointerException
java.lang.NullPointerException
at org.primefaces.component.api.UITree.findTreeNode(UITree.java:111)
at org.primefaces.component.api.UITree.setRowKey(UITree.java:78)
at org.primefaces.component.tree.TreeRenderer.decodeSelection(TreeRenderer.java:62)
at org.primefaces.component.tree.TreeRenderer.decode(TreeRenderer.java:38)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
at org.primefaces.component.api.UITree.processDecodes(UITree.java:170)
at org.primefaces.component.tree.Tree.processDecodes(Tree.java:366)
at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:506
)
at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
at org.primefaces.component.api.UITree.visitTree(UITree.java:392)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at org.primefaces.component.tabview.TabView.visitTree(TabView.java:400)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
at javax.faces.component.UIForm.visitTree(UIForm.java:371)
at javax.faces.component.UIComponent.visitTree(UIComponent.java:1623)
I found the mistake.
just replace
nodeSelectListener="#{beanRequest.clt}"byselection="#{beanRequest.selectedNode}"and create the
selecttedNodevariable in thebeanRequestlike thisprivate TreeNode selectedNode;