J'ai cherché sur internet mais je n'ai pas trouvé quels sont les différents objets qu'on peut attribuer au composant TREE ? et merci.
Version imprimable
J'ai cherché sur internet mais je n'ai pas trouvé quels sont les différents objets qu'on peut attribuer au composant TREE ? et merci.
tu peux préciser quel librairie JSF.
il y a une différence?
moi j'utilise richfaces et woodstock
ouii bien sur, chaque librairie a ses propres composants, mes composants standards sont les composants html et core.
pour le Tree de Richfaces l'interfcae utilisé est org.richfaces.model.TreeNode, tu peux l''implémenter ou utiliser un listener.
la démo de Richfaces donne un exemple pour chaque utilisation.
je ne parle pas du binding je veut savoir si on peut utiliser par exemple une liste comme dans les tableaux et quelle est sa structure?
j'ai vu la démo mais il n'y a pas le code java afin de mieux comprendre son utilisation
Ce n'est pas le binding, c'est le type d'objet de la liste, regarde les exemples de la démo.
le ocmposant prend en value un objet de type org.richfaces.model.TreeNode.
pour initialiser l'objet tu peux soit utiliser le listener, soit utiliser un objet qui implémente l'interface et redéfinir des méthodes.
il y a aussi aussi un exemple ici : tree-component
ce que je veut c de construire un tree dynamique selon l'utilisateur de l'application ,son fonctionnement est la navigation entre les pages JSF :roll:
le code dans ma page jsf est:
Le code JAVA :Code:
1
2
3
4
5
6
7 <a4j:form> <rich:tree value="#{ExTree.tree}" var="item"> <rich:treeNode> <h:outputText value="item.code"/> </rich:treeNode> </rich:tree> </a4j:form>
j'ai l'erreur suivante !!!Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 import org.richfaces.model.TreeNodeImpl; import java.util.List; TreeNodeImpl articletree = new TreeNodeImpl(); articletree.addChild(new Article("PENTIUM 4", 100 , 145), articletree); articletree.addChild(new Article("PENTIUM 5", 300 , 155), articletree); public List gettree() { List<Article> lart =(List<Article>) articletree; return lart; }
je ne sais pas comment je vais faireCode:
1
2 Exception Details: java.lang.ClassCastException org.richfaces.model.TreeNodeImpl cannot be cast to java.util.List
es c que qlq'1 a une idé???
value ne prend pas une liste mais un object de type TreeNode.
- il faut ajouter nodeSelectListener, un exemple de code est dans la démo il me semble.
- dans le getter de treeNode tu remplis la tree, tu ajoute les fils lorsque elle est vide.
j'ai essayé d'ajouter des liens :
j'ai uune classe MItems qui a pour attribut :
Integer id;
String libelle ;
String target;
code JSF :Code:
1
2
3
4
5
6
7
8
9
10
11 TreeNode rootNode = new TreeNodeImpl() ; for (int i = 0; i < listmenu.size(); i++) { TreeNodeImpl nodeImpl = new TreeNodeImpl(); nodeImpl.setData(listmenu.get(i).getLibelle()); rootNode.addChild(listmenu.get(i).getId(), nodeImpl); }
mais le résultat c que les liens ne marche pas :cry:Code:
1
2
3
4
5
6
7
8
9 <a4j:form> <rich:tree rendered="true" var="item" value="#{ExTree.treeNode}" switchType="client" > <rich:treeNode type="node"> <h:outputLink value="#{item.target}"> <h:outputText value="#{item.target}" /> </h:outputLink> </rich:treeNode> </rich:tree> </a4j:form>
je n'ai pas trouvé le bon chemin pour construire un tree composé des liens
tu veux dire quoi par le lien ne marche pas??
le Tree s'affiche comme il faut et le lien ne marche pas ?? ou il n'est pas généré ?
Essaye qq chose comme
Code:
1
2
3
4
5 <rich:tree style="width:300px" nodeSelectListener="#{bean.processSelection}" switchType="client" value="#{bean.treeNode}" var="item" > </rich:tree>
LeTree s'affiche bien
le problème c que le processSelection ne s'exécute pas même avec un simple System.out.println
Remarque: si j'enlève le blocca ne change rien L'etat du tree est la mêmeCode:
1
2
3
4
5 <rich:treeNode type="leaf"> <h:outputLink value="retretr"> <h:outputText value="#{item}"></h:outputText> </h:outputLink> </rich:treeNode>
je précise que je veut que les feuilles du tree me raméneront à d'autre page JSF et merci encore
utilise ajaxSubmitSelection="true".
ou ajoute
Code:<a4j:support event="onselected" />
Merci encore Sniper37 ,
avec l'option ajaxSubmitSelection="true" la méthode processSelection(NodeSelectedEvent event) est exécuté
maintenant il reste à trouvé la méthode pour passer l'attribut String target vers h:outputLink pour aller à d'autres pages JSF ??
je pense à partir de la méthode processSelection on peut identifier l'élément sélectionné puis d'ouvrir la nouvelle page à l'aide de la navigation JSF (ça c pour ouvrir une nouvelle page JSF )
si non si je veut ouvrir une nouvelle fenêtre du navigateur comment je vais atribuer l'@ de la nouvelle fenêtre à l'élement sélectionné
déja la classe que j'ai crée MItems contient les deux éléments :
String libelle ;
String target;
:question:
c'est l'equivalent de nodeTitle dans la démo, ajoute le avec getter/setter et dans le processSelection tu lui donne la valeur de getRowData().
dans la page tu peux tester :
Code:<h:outputText value="Selected Node: #{bean.nodeTitle}" id="selectedNode" />