如何在primefaces的<p:tree>里面使用<p:ajax>?</p:tree> </p:ajax>

时间:2012-10-08 15:40:43

标签: java jsf primefaces

我正在使用<p:tree>。并尝试使用<p:ajax>来检测所选节点并执行操作。这是我的实际JSF代码:

<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>

服务器端方法:

//...
private Client clt;
public void clientSelected(NodeSelectEvent event) {
    //...
}
//...

我得到以下异常:

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)

1 个答案:

答案 0 :(得分:0)

我发现了错误。 只需将nodeSelectListener="#{beanRequest.clt}"替换为 selection="#{beanRequest.selectedNode}" 并像这样在selecttedNode中创建beanRequest变量  private TreeNode selectedNode;