Bonjour,
Voila je souhaite afficher un arbre à partir de données présentes dans une table.
Actuellement j'y arrive sur un arbre très simple (un seul noeud avec des feuilles).
Ce que je souhaite c'est affectivement avoir une arborescence complète.
J'utilise richfaces 4.0, jsf 2.0, jboss 6 et eclipse helios
Voici la structure de la table (batiment) en question :
La colonne pere permet d'indiquer l'id du parentCode:
1
2
3
4 id nom pere
ce que j'ai actuellement :
Ce que je souhaiteCode:
1
2
3
4
5
6
7 ecole administratif culte sport ferry hotel de ville
Mon bean métier :Code:
1
2
3
4
5
6
7 ecole ferry administratif hotel de ville culte sport
Son interface :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 package com.galhauban.patrimoine.batiment; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.ejb.Local; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; @Stateless(name="refItemBean") @Local(com.galhauban.patrimoine.batiment.RefItemLocal.class) public class RefItemBean implements RefItemLocal,Serializable { public EntityManager getEm() { return em; } public void setEm(EntityManager em) { this.em = em; } @PersistenceContext (unitName = "EJB-Patrimoine", name = "EJB-Patrimoine") private EntityManager em; private RefItemEntity item; private static final long serialVersionUID = 1L; private List<RefItemEntity> items; public RefItemBean(){}; public List<RefItemEntity> getItems() { return items; } public void setItems(List<RefItemEntity> items) { this.items = items; } public RefItemEntity getItem() { return item; } public void setItem(RefItemEntity item) { this.item = item; } public List<RefItemEntity> refItemList(){ try { System.out.println("*** Entre dans RefItemBean "); Query query = em.createQuery("select b1 from RefItemEntity b1"); List<RefItemEntity> items = (List<RefItemEntity>) query.getResultList(); System.out.println("*** Nb element : "+items.size()); return items; } catch (Exception e) { System.out.println("Voir pb: " + e.getMessage()); return null; } } }
Mon managedbean :Code:
1
2
3
4
5
6
7
8
9
10
11 package com.galhauban.patrimoine.batiment; import java.util.List; import javax.ejb.Local; @Local public interface RefItemLocal { public List<RefItemEntity> refItemList(); }
Ma classe tree :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 package com.galhauban.patrimoine.batiment; import java.io.Serializable; import java.util.List; import javax.ejb.EJB; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean(name="refItemController") @SessionScoped public class RefItemController implements Serializable { private static final long serialVersionUID = 1L; @EJB private RefItemLocal items; private List<RefItemEntity> liste; private Tree myTree = new Tree(); private Tree myNodes = new Tree(); public RefItemController(){}; public List<RefItemEntity> getListe() { return liste; } public void setListe(List<RefItemEntity> liste) { this.liste = liste; } public RefItemLocal getItems() { return items; } public void setItems(RefItemLocal items) { this.items = items; } public Tree getMyTree() { return myTree; } public void setMyTree(Tree myTree) { this.myTree = myTree; } public Tree getMyNodes() { return myNodes; } public void setMyNodes(Tree myNodes) { this.myNodes = myNodes; } public String doSearch() { try { liste = items.refItemList(); System.out.println("*** Liste taille : " + liste.size()); myNodes.setName("root"); myTree.addChild(0, myNodes); for (RefItemEntity objet : liste){ Tree child = new Tree(); child.setName(objet.getNom()); myNodes.addChild(objet.getId(), child); } return "referentiel.found"; } catch (Exception ex){ System.out.println("pb : " + ex.getMessage()); ex.printStackTrace(); return null; } } }
Mon fichier xhtml :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.galhauban.patrimoine.batiment; import org.richfaces.model.TreeNodeImpl; public class Tree extends TreeNodeImpl{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public String toString() { return this.name; } }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:a4j="http://richfaces.org/a4j" xmlns:rich="http://richfaces.org/rich" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head></h:head> <body> <rich:panel> <f:facet name="header"> Write your own custom rich components with built-in AJAX support </f:facet> <h:form> <rich:tree value="#{refItemController.myTree}" var="station" toggleType="client" > <rich:treeNode > <h:outputText value="#{station}" /> </rich:treeNode> </rich:tree> </h:form> </rich:panel> </body> </html>
Voila j'aurais aimé savoir ce que je devrais changer, ajouter pour obtenir l'arborescence souhaitée.
Merci par avance
Couse1