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

Servlets/JSP Java Discussion :

[tree view] arbre dynamic


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut [tree view] arbre dynamic
    Bonjour,

    J'ai une structure tres imposane de noeuds que je veux représenter dans un tree view. Puisque j'ai beaucoup de noeuds et qu'il y a de la récursivité dans mon graph, alors mon tree view doit absoluement etre dynamique.

    Je veux voir la représentation tree view sur une page web

    Qu'elle est la meilleure solution pour moi?
    JSP? servlet?

    Est-ce qu'une librairie gratuite me permet de batire mon arbre facilement

    J'explore toutes les possibilitées, alors je suis ouvert au suggestions! 8)

    merci

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Pour ma part, j'utilise le treeview de Struts-Layout.

    Mais il en existe un aussi dans Struts Menu.

    A toi de voir ce qui correspond le mieux à ton besoin.

  3. #3
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    ok merci

    Mais je ne comprend pas trop le fonctionnement.... Ca utilise DHTML? Doncsi je comprend bien, mon servlet va me retourner un DOM qui va etre utilisé par mon javascript pour generer mon code HTML?

    cest ca?

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Sincèrement, je ne sais pas expliquer comment Struts-Layout fonctionne réellement derrière mais je sais le mettre en oeuvre.

    On compose le treeview dans une servlet ou une action en utilisant la classe MenuComponent et ces méthodes qui permettent de définir les différents niveaux des branches de l'arbre.
    On met le résultat en session via la méthode addMenuIntoSession de la classe LayoutUtils (ceci n'est pas indiqué dans la doc!).
    Et ensuite, dans la jsp, on code le tag layout:treeview avec les bons paramètres.
    Le plus difficile là-dedans, je trouve, est la constitution du treeview dans la servlet.
    Ne connaissant pas Struts Menu quand j'ai mis en oeuvre cette solution, j'ai créé un fichier xml dans lequel j'ai mis la structure de mon treeview et j'ai écris les classes permettant le parsing.

    Dans Struts Menu, c'est plus simple parce que la définition de la structure du treeview dans un fichier xml est prévue et c'est Struts Menu qui se charge du parsing.

    As-tu regardé les exemples ? Est-ce que ça répond à ton besoin ?
    J'ai testé les deux solutions donc si tu en choisis une et que tu as des problèmes pour la mise en oeuvre, n'hésite pas à me poser des questions !

  5. #5
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    Ok!!

    Merci cest bien gentil!!

    Mais j'avais mis de coté Strut parce que lorsque je vais naviguer dans mon arbre, la page sera rafraichit au complet... tout le HTML sera recherchée.

    Je voudrais que seulement la partie de mon arbre qui est affectée soit rechargée...

    Est-ce que ta solution permet de regler ce probleme??

    Sinon javais pensé a Flash pour ca... vu que le flash peut se modifier sans recharger la page HTML au complet

    Merci encore!!

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Par défaut
    une page html ne peut se recharger que completement...sauf si elle est composée de plusieurs frames ou iframes ou si tu utilises une techno comme ajax...

    Bref dans ton cas, si tu veux une representation graphique évoluée et dynamique tu devrais t'en sortir en faisant une applet JAVA.

  7. #7
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    ¸ouais j'y avait pensé.. mais Je ne n'ai jamais trippé sur les Applets, Est-ce qu'il y a un objet tree view qu'on peut afficher dans une applet ??


    une page html ne peut se recharger que completement...sauf si elle est composée de plusieurs frames ou iframes ou si tu utilises une techno comme ajax...
    Je crois qu'avec Flash je pourrais le faire[/code]

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 106
    Par défaut
    oui avec flash tu pourras...mais l'actionscript est pas aussi puissant que le java

  9. #9
    Membre éclairé Avatar de pmartin8
    Inscrit en
    Novembre 2003
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 306
    Par défaut
    ok,
    Est-ce qu'il y a un objet tree view qu'on peut afficher dans une applet ??

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 38
    Par défaut
    Bonjour,
    est-ce quelqu'un aurait un exemple simple d'utilisation des treeviews avec Struts Layout ? Avec le fichier Action et le fichier JSP ca serait parfait !
    Parce que là je vois pas trop comment ca marche....

    Merci d'avance...

  11. #11
    Membre Expert
    Avatar de zekey
    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 036
    Par défaut
    Citation Envoyé par pmartin8
    ok merci

    Mais je ne comprend pas trop le fonctionnement.... Ca utilise DHTML? Doncsi je comprend bien, mon servlet va me retourner un DOM qui va etre utilisé par mon javascript pour generer mon code HTML?

    cest ca?
    Oui plus ou moins et grace à la techno AJAX, il lance des requête en tache de fond pour charger les noeuds au fur et à mesure.
    Struts n'as rien à voir la dedans, c'est un framework MVC, c'est tout la facon dont tu le mets en oeuvre fait que tu aura des reloads de pages ou pas.

    Evite les applets pour des raisons de portabilités

  12. #12
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par Tangi29
    Bonjour,
    est-ce quelqu'un aurait un exemple simple d'utilisation des treeviews avec Struts Layout ? Avec le fichier Action et le fichier JSP ca serait parfait !
    Parce que là je vois pas trop comment ca marche....

    Merci d'avance...
    Voici un exemple simple :

    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
     
    public class TestTreeview extends Action
    {
        public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    	{
            MenuComponent a = new MenuComponent() ;
            a.setName("TEST") ;
     
            MenuComponent a1 = new MenuComponent() ;
            a1.setTitle("Menu 1") ;
            // a1 enfant de a
    		  a.addMenuComponent(a1);
     
            MenuComponent a11 = new MenuComponent();
            a11.setTitle("Sous-Menu 1") ;
            // a11 enfant de a1
            a1.addMenuComponent(a11) ;
     
            MenuComponent a111 = new MenuComponent();
            a111.setTitle("Action 1");
            // a111 enfant de a11
    		  a11.addMenuComponent(a111);
     
            MenuComponent a112 = new MenuComponent();
            a112.setTitle("Action 2");
            // a112 enfant de a11
    		  a11.addMenuComponent(a112);
     
            MenuComponent a12 = new MenuComponent();
            a12.setTitle("Sous-Menu 2");
            // a12 enfant de a1
            a1.addMenuComponent(a12) ;
     
            MenuComponent a121 = new MenuComponent();
            a121.setTitle("Action 1");
            // a121 enfant de a12
    		  a12.addMenuComponent(a121);
     
            MenuComponent a122 = new MenuComponent();
            a122.setTitle("Action 2") ;
            // a122 enfant de a12
            a12.addMenuComponent(a122);
     
    		  LayoutUtils.addMenuIntoSession(request,a);
     
    	     return(mapping.findForward("success"));
    	}
    }
    Il faut créer une instance de MenuComponent pour chaque élément de ton treeview et utiliser la méthode addMenuComponent pour définir les enfants et les parents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <%@taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
     
    <html>
    <head>
    	<layout:skin includeScript="true"/>
    </head>
    <body>
     
    <layout:treeview name="TEST" width="200"/>
     
    </body>
    </html>
    Le valeur de l'attribut name du tag layout:treeview doit correspondre au name que tu as donné à l'élément root de ton treeview via la méthode setName().

    Dans cet exemple, les éléments du treeview sont codés en dur dans l'action.
    Dans la solution que j'ai mise en oeuvre, les éléments du treeview sont dans un fichier xml que je parse et mon Action constitue automatiquement le treeview à partir de l'objet résultat du parsing, ce qui, je reconnais, n'est pas simple à mettre en oeuvre.
    Depuis, j'ai découvert qu'il existait la taglib Struts-menu qui se base sur un fichier xml et qui fait tout le boulot du parsing et de la constitution du treeview.
    Tu aurais peut-être intérêt à regarder ça de plus près.

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 38
    Par défaut
    Merci beaucoup, j'ai réussi à me débrouiller à peu près !

    Juste une ptite question, a quoi sert cette partie de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <head>
       <layout:skin includeScript="true"/>
    </head>

  14. #14
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    ça permet d'inclure le javascript de Struts-Layout, soit javascript.js, dans la page, ce qui est nécessaire à l'affichage du treeview.

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 38
    Par défaut
    Citation Envoyé par c_nvy
    ça permet d'inclure le javascript de Struts-Layout, soit javascript.js, dans la page, ce qui est nécessaire à l'affichage du treeview.
    ok, merci !
    Pour ça j'avais bidouillé avec ça :

    <script language="JavaScript" src="<layout:resource type="cfg" name="javascript.js"/>"></script>
    Mais ca doit être plus propre avec ton code...

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 38
    Par défaut
    J'aimerais que lorsque j'arrive sur ma page qui contient l'arbre, tous les noeuds soient fermés.

    J'ai vu que l'attibut "expandedLevelsAtFirst " permet d'afficher l'arbre avec une profondeur que l'on veut.

    J'ai donc mis dans ma jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <layout:treeview name="domaines" expandedLevelsAtFirst="0" />
    Mais l'arbre s'affiche toujours dans l'état où on l'a laissé la dernière fois, surement pour cette raison :


    Des cookies sont utilisés pour mémoriser quels noeuds du treeview sont ouverts et fermés
    Quelqu'un voit comment forcer l'arbre à s'afficher toujours fermé ?

    Merci d'avance...

  17. #17
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut et dans le fichier struts config?
    Bonjour, je dois moi aussi utiliser le treeview de struts layout, j'ai donc vu ton exemple simple et je voulais savoir si dans struts-config.xml tu avais mis comme il est dit dans la doc :
    L'action du treeview doit être définie dans le fichier struts-config.xml avec les attributs suivants :

    * path="/treeview"
    * type="fr.improve.struts.taglib.layout.treeview.TreeviewAction"
    Merci

  18. #18
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Il faut effectivement déclarer cette Action dans le struts-config.xml.

  19. #19
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Daccord donc ensuite comment fais tu ton mapping vers cette classe?

  20. #20
    Inactif  
    Inscrit en
    Avril 2005
    Messages
    750
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 750
    Par défaut
    Je voulais pouvoir encore profité de ta connaissance de struts layout et te demandé si c'était possible de faire quelque chose comme sa :
    tree.jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <nested:form action="/jdiff-tree">
     
      <logic:present name="treeForm" property="root">
    	  <nested:nest property="root" >
    	    <jsp:include page="treeNode.jsp" />
    	  </nested:nest>
      </logic:present>
      <logic:empty name="treeForm" property="root">
      	<%= "Session perdu - rentrer l'url." %>
      </logic:empty>
    </nested:form>
    et treeNode.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
     
    <layout:treeview>
    <nested:root>
        <nested:notEmpty property="iconId">
        	<nested:img page="/icon" property="iconIdRequest"/>
        </nested:notEmpty>
        <layout:menuItem key="nodeName"/>
        <br> 
        <nested:iterate property="childCollection"> 
          <jsp:include page="treeNode.jsp" /> 
        </nested:iterate> 
     
      </nested:equal>
     
    </nested:root>
    </layout:treeview>
    Quelque chose dans ce style ou nodeName est une propriété de bean

Discussions similaires

  1. Conception menu en arbre (tree view)
    Par methodman225 dans le forum WebDev
    Réponses: 0
    Dernier message: 07/10/2011, 12h34
  2. [C#]Remplir un tree view avec un data set
    Par maitesn1 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 06/07/2006, 09h32
  3. [C#]Folder tree view et fichier/répertoire caché
    Par bilb0t dans le forum Windows Forms
    Réponses: 5
    Dernier message: 02/02/2006, 16h46
  4. Tree view dynamique
    Par oravelon dans le forum ASP
    Réponses: 1
    Dernier message: 08/08/2005, 17h00
  5. Tree View avec XML et XSL
    Par Drooxy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/04/2003, 10h21

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