Bonjour,

J'ai un problème avec les composants que je viens de citer dans le titre,
l'affichage s'effectue correctement mais les actions ne fonctionnent pas en javascript.j'utilise facelets mais le rendu est correct

Rmq j'ai fais CTRL+C et CTRL+V d'un exemple ...
j'essaie de comprendre
page jsp
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
<h:form>
        <h:panelGrid width="200">
        <t:tree2 id="wrapTree" value="#{TreeBacker.treeData}" var="node" varNodeToggler="t" clientSideToggle="false">
            <c:facet name="person">
                <h:panelGrid id="a" columns="2" cellpadding="0" cellspacing="0">
                    <t:graphicImage value="/images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>
                    <t:graphicImage value="/images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
                    <h:outputText value="#{node.description}" styleClass="nodeFolder"/>
                </h:panelGrid>
            </c:facet>
            <c:facet name="Gestion-folder">
                <h:panelGrid id="b" columns="2" cellpadding="2" cellspacing="0">
                    <t:graphicImage value="/images/yellow-folder-open.png" rendered="#{t.nodeExpanded}" border="0"/>
                    <t:graphicImage value="/images/yellow-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
                    <h:panelGroup>
                        <h:outputText value="#{node.description}" styleClass="nodeFolder"/>
                        <h:outputText value=" (#{node.childCount})" styleClass="childCount" rendered="#{!empty node.children}"/>
                    </h:panelGroup>
                </h:panelGrid>
            </c:facet>
            <c:facet name="bar-folder">
                <h:panelGrid id="c" columns="2" cellpadding="2" cellspacing="0">
                    <t:graphicImage value="/images/blue-folder-open.gif" rendered="#{t.nodeExpanded}" border="0"/>
                    <t:graphicImage value="/images/blue-folder-closed.png" rendered="#{!t.nodeExpanded}" border="0"/>
                    <h:panelGroup>
                        <h:outputText value="#{node.description}" styleClass="nodeFolder"/>
                        <h:outputText value=" (#{node.childCount})" styleClass="childCount" rendered="#{!empty node.children}"/>
                    </h:panelGroup>
                </h:panelGrid>
            </c:facet>
            <c:facet name="document">
                <h:panelGroup>
                    <h:commandLink immediate="true" styleClass="#{t.nodeSelected ? 'documentSelected':'document'}" actionListener="#{t.setNodeSelected}">
                        <t:graphicImage value="/images/document.png" border="0"/>
                        <h:outputText value="#{node.description}"/>
                        <c:attribute name="docNum" value="#{node.identifier}"/>
                    </h:commandLink>
                </h:panelGroup>
            </c:facet>
        </t:tree2>
    </h:panelGrid>
    </h:form>
bean
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
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
 
import org.apache.myfaces.custom.tree2.HtmlTree;
import org.apache.myfaces.custom.tree2.TreeNode;
import org.apache.myfaces.custom.tree2.TreeNodeBase;
import org.apache.myfaces.custom.tree2.TreeModel;
import org.apache.myfaces.custom.tree2.TreeModelBase;
 
import javax.faces.context.FacesContext;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.validator.ValidatorException;
import javax.faces.event.ActionEvent;
import java.io.Serializable;
 
/**
 * Backer bean for use in example.  Basically makes a TreeNode available.
 *
 * @author Sean Schofield
 * @version $Revision: 472610 $ $Date: 2006-11-08 19:46:34 +0000 (Wed, 08 Nov 2006) $
 */
public class TreeBacker implements Serializable
{
    /**
     * serial id for serialisation versioning
     */
    private static final long serialVersionUID = 1L;
    private TreeModelBase     _treeModel;
    private HtmlTree          _tree;
 
    public TreeNode getTreeData()
    {
        TreeNode treeData = new TreeNodeBase("Gestion-folder", "Espace Gestion", false);
 
        // construct a set of fake data (normally your data would come from a database)
 
        // populate Frank's portion of the tree
        TreeNodeBase personNode = new TreeNodeBase("person", "Frank Foo", false);
        personNode.getChildren().add(new TreeNodeBase("Gestion-folder", "Requires Foo", false));
        TreeNodeBase folderNode = new TreeNodeBase("Gestion-folder", "Requires Foo Reviewer", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "X050001", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "X050002", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "X050003", true));
        personNode.getChildren().add(folderNode);
        personNode.getChildren().add(new TreeNodeBase("Gestion-folder", "Requires Foo Recommendation", false));
        folderNode = new TreeNodeBase("Gestion-folder", "Requires Foo Approval", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "J050001", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "J050002", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "J050003", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "E050011", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "R050002", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "C050003", true));
        personNode.getChildren().add(folderNode);
        folderNode = new TreeNodeBase("bar-folder", "Requires Bar Processing", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "X050003", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "X050011", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "F050002", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "G050003", true));
        personNode.getChildren().add(folderNode);
        folderNode = new TreeNodeBase("bar-folder", "Requires Bar Approval", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "J050006", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "J050007", true));
        personNode.getChildren().add(folderNode);
 
        treeData.getChildren().add(personNode);
 
        // populate Betty's portion of the tree
        personNode = new TreeNodeBase("person", "Betty Bar", false);
        personNode.getChildren().add(new TreeNodeBase("Gestion-folder", "Requires Foo", false));
        folderNode = new TreeNodeBase("Gestion-folder", "Requires Foo Reviewer", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "X012000", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "X013000", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "X014000", true));
        personNode.getChildren().add(folderNode);
        folderNode = new TreeNodeBase("Gestion-folder", "Requires Foo Recommendation", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "J010026", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "J020002", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "J030103", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "E030214", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "R020444", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "C010000", true));
        personNode.getChildren().add(folderNode);
        personNode.getChildren().add(new TreeNodeBase("Gestion-folder", "Requires Foo Approval", false));
        folderNode = new TreeNodeBase("bar-folder", "Requires Bar Processing", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "T052003", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "T020011", true));
        personNode.getChildren().add(folderNode);
        folderNode = new TreeNodeBase("bar-folder", "Requires Bar Approval", false);
        folderNode.getChildren().add(new TreeNodeBase("document", "J010002", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "J030047", true));
        folderNode.getChildren().add(new TreeNodeBase("document", "F030112", true));
        personNode.getChildren().add(folderNode);
 
        treeData.getChildren().add(personNode);
 
        return treeData;
    }
 
    /**
     * NOTE: This is just to show an alternative way of supplying tree data.  You can supply either a
     * TreeModel or TreeNode.
     *
     * @return TreeModel
     */
    public TreeModel getExpandedTreeData()
    {
        return new TreeModelBase(getTreeData());
    }
 
    public void setTree(HtmlTree tree)
    {
        _tree = tree;
    }
 
    public HtmlTree getTree()
    {
        return _tree;
    }
 
    public String expandAll()
    {
        _tree.expandAll();
        return null;
    }
 
    private String _nodePath;
 
    public void setNodePath(String nodePath)
    {
        _nodePath = nodePath;
    }
 
    public String getNodePath()
    {
        return _nodePath;
    }
 
    public void checkPath(FacesContext context, UIComponent component, java.lang.Object value)
    {
        // make sure path is valid (leaves cannot be expanded or renderer will complain)
        FacesMessage message = null;
 
        String[] path = _tree.getPathInformation(value.toString());
 
        for (int i = 0; i < path.length; i++)
        {
            String nodeId = path[i];
            try
            {
                _tree.setNodeId(nodeId);
            }
            catch (Exception e)
            {
                throw new ValidatorException(message, e);
            }
 
            if (_tree.getNode().isLeaf())
            {
                message = new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid node path (cannot expand a leaf): "
                        + nodeId, "Invalid node path (cannot expand a leaf): " + nodeId);
                throw new ValidatorException(message);
            }
        }
    }
 
    public void expandPath(ActionEvent event)
    {
        _tree.expandPath(_tree.getPathInformation(_nodePath));
    }
}
résultat .hic
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
document.forms.j_id9['wrapTree:org.apache.myfaces.tree.NAV_COMMAND'] has no properties
C'est une erreur javascript j'ai changé dans le tutoriel le f:param en f:attributes car j'avais eu des soucis dans le même projet pour des h:commandLink pour le passage de paramètres ???????

bref
des pros tomahawk ???

olivier