IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

[JSF] arbre


Sujet :

JSF Java

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Par défaut [JSF] arbre
    Existe-t-il un composant permettant de représenter un arbre ?

    J'ai en fait des éléments à afficher, plus ou moins sous cette forme :

    "
    + Element 1
    fils1
    fils2
    + Element 2
    + Element 3
    fils1
    "

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 5
    Par défaut
    il y a le composant tree2 de l'implémentation myFaces de JSF (http://myfaces.apache.org/).
    Tu peux récupérer sur le site un .war de démonstration complet de l'ensemble des composants.

    Il y a également Oracle ADF Faces Components avec notamment un arbre.

    Il y a également WebGalileo Faces Components avec notamment un arbre.

    PS: Oracle et l'équipe de Myfaces vont travailler en partenariat pour développer des composants JSF.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Par défaut
    qu'est ce qu'un ".war" ?

  4. #4
    Membre confirmé Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    un fichier war (Web ARchive) contient un application web (des JSP, des tags, des classes)

  5. #5
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Par défaut
    Pour continuer dans les questions de novices : ca s'ouvre avec koi ?

  6. #6
    Membre confirmé Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Par défaut
    Tu le met dans le repertoire de deploiement de ton serveur d'application et il le deploie.

    Sinon, tu peux l'ouvrir avec winRAR si tu en as envie.

  7. #7
    Membre confirmé
    Inscrit en
    Juin 2005
    Messages
    275
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 275
    Par défaut
    Merci

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    J'essaye aussi de créer un tree2 mais je ne comprends pas comment l'arbre est créé? J'ai trouvé cet exemple mais sans trouver la classe treeBacker. Dois-je créer ma propre classe et comment dois-je créer mon arbre? Merci!


    <t:tree2 id="clientTree" value="#{treeBacker.treeData}" var="node" varNodeToggler="t" showRootNode="false">
    <f:facet name="person">
    <h:panelGroup>
    <f:facet name="expand">
    <t:graphicImage value="/images/icons/space.gif" rendered="#{t.nodeExpanded}" border="0"/>
    </f:facet>
    <f:facet name="collapse">
    <t:graphicImage value="/images/icons/space.gif" rendered="#{!t.nodeExpanded}" border="0"/>
    </f:facet>
    <h:outputText value="#{node.description}" styleClass="nodeFolder"/>
    </h:panelGroup>
    </f:facet>

  9. #9
    Membre éclairé
    Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 89
    Par défaut
    Voici la classe TreeBacker qui correspond à l'example
    (tu l'aura si tu télécharge les sources de myFaces 1.1.1)

    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
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
     
    /*
     * Copyright 2005 The Apache Software Foundation.
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    package org.apache.myfaces.examples.tree;
     
    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: 234267 $ $Date: 2005-08-21 12:55:19 -0400 (Sun, 21 Aug 2005) $
     */
    public class TreeBacker implements Serializable
    {
        private TreeModelBase _treeModel;
        private HtmlTree _tree;
     
        public TreeNode getTreeData()
        {
            TreeNode treeData = new TreeNodeBase("foo-folder", "Inbox", 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("foo-folder", "Requires Foo", false));
            TreeNodeBase folderNode = new TreeNodeBase("foo-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("foo-folder", "Requires Foo Recommendation", false));
            folderNode = new TreeNodeBase("foo-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("foo-folder", "Requires Foo", false));
            folderNode = new TreeNodeBase("foo-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("foo-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("foo-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));
        }
    }

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Merci beaucoup pour ton secours!
    Pour l'utiliser et inclure ces fichiers et tomahawk dans ma page jsp:
    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;
    Est-ce qu'il faut que je rajoute quelque chose dans mon web.xml une servlet ou autre?

    Est-ce qu'apres il est possible d'ajouter un actionListener sur chaque élément de l'arbre? Quand je clique sur un element j'ouvre une autre page.

    Merci encore

  11. #11
    Membre éclairé
    Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2002
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 89
    Par défaut
    Pour l'utiliser et inclure ces fichiers et tomahawk dans ma page jsp:
    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;
    Est-ce qu'il faut que je rajoute quelque chose dans mon web.xml une servlet ou autre?
    Vu les questions, peut être un tutorial ou un livre sur jsf serai bienvenu, ce serait trop long à tout expliquer

    Tu peux déjà telecharger les exemple de myFaces (les sources),
    essayer de faire tourner l'exemple et de le modifier
    http://myfaces.apache.org/download.html

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    453
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 453
    Par défaut
    Merci pour les conseils. Je n'ai pas beaucoup de temps pour apprendre... Est-ce que tu pourrais m'indiquer l'exemple qui correspond a mes besoins a savoir pouvoir cliquer sur un item de l'arbre et declencher un actionListener? Parce que j'ai deja essayé tree.jsp depuis mon environnement mais j'avais des problemes de faces config... surement du a quelque chose de manquant dans mon web.xml enfin je pense..

    Je suppose qu'il n'est pas non plus possible d'utiliser un JTree dans une page jsp?

    Merci encore

Discussions similaires

  1. Affichage simple d'un arbre en JSF
    Par suzchr dans le forum JSF
    Réponses: 9
    Dernier message: 03/12/2008, 09h56
  2. Réponses: 2
    Dernier message: 27/09/2005, 17h26
  3. Qu'est ce qu'un arbre
    Par sandrine dans le forum C
    Réponses: 8
    Dernier message: 23/10/2002, 13h12
  4. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 16h48
  5. arbre de parcour d'arborescence windows
    Par chupachoc dans le forum Composants
    Réponses: 7
    Dernier message: 09/09/2002, 08h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo