Bonjour,
J'utilise RichFaces 3.3.3, et mon client est un Firefox 3.0.x (pas le choix).
J'ai désespérément tenté de créer un arbre (jusque là, ok) dynamique (et là pas ok).
Par exmple je veux supprimer des noeuds (menu contextuel sur click gauche) et mettre à jour un compteur de feuilles. Je pass ebien dans mes action (ou actionListener) mais après de multiples tentatives, je me suis rendu compte que c'est le reRender qui foire : voici l'erreur dans la console js de FF :
J'ai fait un arbre de test tout simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Error: not well-formed Source File: http://localhost:8280/myapp/test.jsf Line: 12, Column: 25 Source Code: if (!params.ajaxSingle && event.ajaxSingle) {
Je suis à cours d'idées pour tenter de contourner ce pb .
Voici des extrait du code :
les classes :
Code : 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 <a4j:form> <rich:tree id="testTree" swichType="client" > <rich:recursiveTreeNodesAdaptor roots="#{myBBean.testRootNodes}" var="node" nodes="#{node.children}"> <rich:treeNode data="#{node.id}"> <h:outputText value="#{node.label}"/> <rich:spacer width="3px"/> <h:outputText id="compteur" value="#{myBBean.debugClickCount}" /> <a4j:commandLink action="#{myBBean.doClick}" reRender="testTree" > click me </a4j:commandLink> </rich:treeNode> </rich:recursiveTreeNodesAdaptor> </rich:tree> </a4j:form>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class TestNode { private String id; private String label; private List<TestNode> children; private TestNode parent; ...get/setters }Et je dis que c'est le rerender du tree qui foire, car si dans reRender je met un autre composant, je n'ai pas d'erreur dans la console (mais bon, mon tree n'as rafraichit .. ce que je cherche à faire tout de même !!).
Code : 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 public class MyBean { ... private TreeNode[] testRootNodes; private int debugClickCount = 0; //+get/set public void doClick(){debugClickCount ++;} ... private void builtTestTree() { this.testRootNodes = new TestNode[1]; TestNode rootNode = new TestNode(); rootNode.setId("1"); rootNode.setLabel("NODE id "+rootNode.getId()); List<TestNode> children = new ArrayList<TestNode>(); TestNode child01 = new TestNode(); child01.setId("1:01"); child01.setLabel("child "+child01.getId()); child01.setParent(rootNode); children.add(child01); TestNode child02 = new TestNode(); child02.setId("1:02"); child02.setLabel("child "+child02.getId()); child02.setParent(rootNode); children.add(child02); rootNode.setChildren(children); testRootNodes[0]=rootNode; }![]()
Partager