Composant PrimeFaces Tree, définissant le nœud sélectionné à partir du bean géré
Je suis en cours d'exécution Primefaces 3.2 et JSF 2.0 sur Glassfish 3.
J'ai essayé beaucoup de choses, à définir par programmation le nœud sélectionné à partir d'un managed bean. Que comprend le paramétrage du nœud sélectionné comme ceci:
public void setSelectedTreeNode(String name) {
TreeNode root = treeBean.getRoot();
List<TreeNode> tree = root.getChildren();
for(TreeNode node:tree) {
if(node.getData().toString().contains(name)) {
System.out.println("found the node to select");
treeBean.setSelectedNode(node);
break;
}
}
RequestContext context = RequestContext.getCurrentInstance();
context.update(":navForm:treeSingle");
}
La "trouvé le nœud pour sélectionner" sera affiché dans le terminal, mais le nœud n'est pas sélectionné dans l'Arborescence de la page web..
L'arbre est comme ceci:
<h:form id="navForm">
<p:tree id="treeSingle" value="#{treeBean.root}" var="node"
selectionMode="single" styleClass="treeStyle"
selection="#{treeBean.selectedNode}"
cache="false"
>
<p:ajax event="select" listener="#{treeBean.onNodeSelect}" update=":mainForm" />
<p:treeNode>
<h:outputText value="#{node}" escape="false" />
</p:treeNode>
Edit: TreeBean est construit comme ceci:
@ManagedBean
@SessionScoped
public class TreeBean implements Serializable {
private TreeNode root;
private TreeNode selectedNode;
public TreeBean() {
root = new DefaultTreeNode("Root", null);
TreeNode node0 = new DefaultTreeNode("Node 0", root);
TreeNode node1 = new DefaultTreeNode("Node 1", root);
TreeNode node2 = new DefaultTreeNode("Node 2", root);
TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);
TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
TreeNode node11 = new DefaultTreeNode("Node 1.1", node1);
TreeNode node000 = new DefaultTreeNode("Node 0.0.0", node00);
TreeNode node001 = new DefaultTreeNode("Node 0.0.1", node00);
TreeNode node010 = new DefaultTreeNode("Node 0.1.0", node01);
TreeNode node100 = new DefaultTreeNode("Node 1.0.0", node10);
}
public TreeNode getRoot() {
return root;
}
public TreeNode getSelectedNode() {
return selectedNode;
}
public void setSelectedNode(TreeNode selectedNode) {
this.selectedNode = selectedNode;
}
}
Quelqu'un a une idée sur comment faire?
source d'informationauteur baron5
Vous devez vous connecter pour publier un commentaire.
Je l'ai résolu en utilisant:
J'ai découvert qu'en sélectionnant le nœud n'est pas suffisant pour "l'arbre de la composante" développement à partir de la racine de nœud à nœud sélectionné.
Pour cela, j'ai utilisé la méthode suivante. Sur la vue :
sur le code java:
À mettre en évidence certaines nœud de l'arborescence sur le côté client de sauvegarde de haricot appel selectNode() la méthode de l'arbre widget composant.
Tout d'abord, définir widget attribut var à jsf composant de l'arbre:
Que vous pouvez le tester à partir du navigateur de la console:
Premier argument d'une méthode représente le nœud de l'objet jquery qui a été obtenu par son id(symbole deux-points doit être échappé par deux barres obliques inverses).
Si le deuxième paramètre est défini à false, alors le nœud de sélection de l'événement sera déclenché.
Enfin, faire appel javascript à partir de la sauvegarde de haricot:
P. S. pour découvrir composant api js type dans le navigateur de la console
Ci-dessus
if
déclaration, lorsque la valeur est true, faire unnode.setSelected(true);
- Je l'utiliser pour définir les nœuds en tant que de besoin. L'inverse est évidemment l'effet inverse; il l'éteint. Mon cas d'utilisation a été un booléen case à cocher pour désactiver tous les nœuds sur on ou off comme je l'ai fait quelques cours d'exécution sur le côté d'un arbre. Mon code actuel, impliquant quelques méthodes, est donc:-
Je suis cependant, en utilisant 3.4 sur JSF 2 sur GF 3. Je ne sais pas si il y a une différence.
Regs
Tim
s'il vous plaît ajouter
node.setSelected(true)
ci-dessoustreeBean.setSelectedNode(node);
et cela devrait fonctionner.Essayé avec primefaces 5.2 et multisélection:
œuvres.
Je travaille avec Primefaces 3.0 déployé dans Glassfish 3.1 Build 43;
La treeNode a été ou est sélectionné automatiquement avec : myTreeNode.setSelected(true);
Exemple :