Bonjour,
J'ai cherché sur internet une réponse à ma question, j'en ai trouvé beaucoup qui ont l'air de marcher chez les autres mais pas chez moi... Je dois faire un truc de travers donc je viens demander votre aide
Tout est dans le titre, j'ai deux ManagedBean et je souhaite modifier le premier à l'intérieur du second. L'un d'entre eux est un TreeBean généré avec PrimeFaces et je souhaite remplir le deuxième Bean à la sélection d'un node du treeBean.
Voici la classe que je souhaite remplir :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 @ManagedBean(name = "selectedTerme", eager = true) @SessionScoped public class SelectedTerme { private String nom = ""; public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; } }
Et la classe du treeBean :
Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
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 @ManagedBean (name = "treeBean", eager = true) @SessionScoped public class TreeBean { private TreeNode root; private TreeNode selectedNode; @ManagedProperty(value="#{selectedTerme}") private SelectedTerme selectedTerme; public TreeBean() { root = (TreeNode) new DefaultTreeNode("Root", null); List<String> racine = new ArrayList<String>(); Connexion co = new Connexion(); racine = co.addRacine(); for(String s : racine) { TreeNode dynamicTreeNode = (TreeNode) new DefaultTreeNode(s, root); new DefaultTreeNode("fake", dynamicTreeNode); } } public void onNodeExpand(NodeExpandEvent event) { //Implémentation de lexpansion de l'arbre } public TreeNode getRoot() { return root; } public TreeNode getSelectedNode() { return selectedNode; } public void setSelectedNode(TreeNode selectedNode) { this.selectedNode = selectedNode; } public void onNodeSelect(NodeSelectEvent event) { try { this.selectedTerme.setNom(this.selectedNode.toString()); } catch (UnsupportedOperationException e1) { System.out.println(e1.getMessage()); } catch (ClassCastException e2) { System.out.println(e2.getMessage()); } catch (NullPointerException e3) { System.out.println(e3.getMessage()); } catch (IllegalArgumentException e4) { System.out.println(e4.getMessage()); } } }
Comme ça ne marchait pas, j'ai également ajouté dans mon faces-config.xml :
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <managed-bean> <managed-bean-name>treeBean</managed-bean-name> <managed-bean-class>monPackage.TreeBean</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>selectedTerme</managed-bean-name> <managed-bean-class>monPackage.SelectedTerme</managed-bean-class> <managed-bean-scope>request</managed-bean-scope> </managed-bean>
Lorsque je passe en debug, je vois que le selectedTerme présent dans la classe TreeBean renvoie toujours NULL, du coup lorsque je veux l'afficher dans ma page xhtml rien n'apprait. Par contre, si je met des valeurs en dur dans la classe SelectedTerme, je peux les afficher (donc c'est bien la communication entre les deux bean qui ne se fait pas).
Voilà j'espère que je suis compréhensible, s'il manque des informations dites le moi !Merci d'avance pour votre aide !
Partager