2017-04-14 2 views
0

Dans Primefaces je voudrais développer un <p:treeNode>, quand je clique sur son étiquette, pas quand je clique sur le petit triangle. Je ne trouve pas un document xhtml, mais a constaté que les noeuds sont créés de cette façon:p: treeNode développer sur l'étiquette cliquez sur

... 
final TreeNode parentNode = this.addNode(false, "Parent", this.root, targetView1); //first parameter means start expanded or not 
this.addNode(, "ChildNode", parentNode, "targetView2"); 
... 

Est-il possible? Je vous remercie.

+0

Vous pouvez (en clair html/javascript) ajoutez toujours un simple gestionnaire 'click' à l'étiquette qui simule un clic sur le triangle correspondant ... – Kukeltje

+0

vous pouvez utiliser un 'p: commandLink' –

+0

J'ai essayé d'implémenter ce manque de fonctionnalité pour Tree Node par mes propres moyens sans beaucoup de succès. Quelqu'un serait-il au courant d'exemples que je pourrais citer pour mieux apprendre comment je peux faire cela? Merci d'avance! –

Répondre

0

Juste au cas où quelqu'un est intéressé par une solution que je crois @Kukeltje fait référence ici est mon interprétation:

XHTML:

<p:tree value="#{Bean.rootNode}" var="node" style="width: 100%" id="tree" selectionMode="single"> 
     <p:treeNode id="node">         
      <h:outputText value="#{node.name}" /> 
     </p:treeNode>  
     <p:ajax event="select" update=":form:tree" listener="#{Bean.onNodeSelect}" /> 
    </p:tree> 

Bean:

public void onNodeSelect(NodeSelectEvent event) { 
    if (event.getTreeNode().isExpanded()) { 
     //closes if it is open. 
     event.getTreeNode().setExpanded(false); 
    } else { 
     //open if it is closed. 
     collapsingORexpanding(event.getTreeNode(), false);//this is so all children are closed under this node. trust me, you want this... 
     event.getTreeNode().setExpanded(true); 
    } 
} 

public void collapsingORexpanding(TreeNode n, boolean option) { 
    if (n.getChildren().isEmpty()) { 
     n.setSelected(false); 
    } else { 
     for (TreeNode s : n.getChildren()) { 
      collapsingORexpanding(s, option); 
     } 
     n.setExpanded(option); 
     n.setSelected(false); 
    } 
}