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

Struts 1 Java Discussion :

[STRUTS-LAYOUT] Treeview


Sujet :

Struts 1 Java

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut [STRUTS-LAYOUT] Treeview
    bonjour à tous

    G un p'tit problème avec les treeview. Je souhaite avoir cette arborescence :

    +--nomAlbum1
    |__ nomAudio1
    |__ nomAudio2
    |__ nomAudio3
    |__ ... ... ...

    +--nomAlbum2
    |__ nomAudio1
    |__ nomAudio2
    |__ nomAudio3
    |__ ... ... ...

    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
     
    conn = dataSource.getConnection();
     
    stmt = conn.createStatement();
     
    rs = stmt.executeQuery("select tblAlbum.nomAlbum, tblAudio.nomAudio, "
                                       +"tblAudio.pisteAudio,  tblAudio.idAlbum "   
                                       +"from tblAlbum,tblAudio "
                                       +"where tblAlbum.idAlbum = tblAudio.idAlbum "
                                       +"order by idAlbum asc ,pisteAudio asc");
     
    			String nomAlbum = "";
     
    			MenuComponent lc_menu1 = new MenuComponent();
    			lc_menu1.setName("listeAudio");
     
    			while (rs.next()){
     
    				MenuComponent lc_menu2 = new MenuComponent();
    				lc_menu2.setTitle(rs.getString("nomAlbum"));
     
    				if (nomAlbum.equals((rs.getString("nomAlbum")))){						
     
    					MenuComponent lc_menu3 = new MenuComponent();
    					lc_menu3.setTitle(rs.getString("nomAudio"));
     
    					lc_menu2.addMenuComponent(lc_menu3);
     
    				}else{
     
    					nomAlbum = rs.getString("nomAlbum");
     
    					MenuComponent lc_menu3 = new MenuComponent();
    					lc_menu3.setTitle(rs.getString("nomAudio"));
     
    					lc_menu2.addMenuComponent(lc_menu3);
    					lc_menu1.addMenuComponent(lc_menu2);				
    				}
    			}
    La requete effectué est une jointure entre deux tables (tblAlbum, tblAudio) me permettant de récupérer tt les chansons triées par album et par piste (piste 1,2,3,4,5 ...).

    Un test sur le nomAlbum de l'enregistrement en cour est effectué :

    1) si cette enregistrement fait partie du même album

    ->On ajoute la piste au noeud de l'album

    2)dans le cas contraire on créé un nouveau noeud avec le nomAlbum et on ajoute la piste.

    Problème: je n'arrive a avoir que la première chanson de chaque Album, c'est à dire :

    +--nomAlbum1
    |__ nomAudio1

    +--nomAlbum2
    |__ nomAudio1

    Merci pour vos reponse.

  2. #2
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Nobody ?

  3. #3
    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
    Salut DarkWark.

    Essaie comme ça :
    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
     
            MenuComponent menu = new MenuComponent() ;
            menu.setName("listeAudio") ;
     
            String nomAlbum="" ;
            MenuComponent menuAlbum = null ;
     
            while (rs.next())
            {
              nomAudio = rs.getString("nomAudio") ;
     
              if ( ! nomAlbum.equals((rs.getString("nomAlbum"))) )
              {
                  nomAlbum = rs.getString("nomAlbum");
     
     			    menuAlbum = new MenuComponent() ;
     			    menuAlbum.setTitle(nomAlbum) ;
     			    menu.addMenuComponent(menuAlbum) ;
              }
     		    MenuComponent menuAudio = new MenuComponent() ;
     		    menuAudio.setTitle(nomAudio) ;
     		    menuAlbum.addMenuComponent(menuAudio) ;
            }
    Pour que ça fonctionne, il faut conserver l'instance de MenuComponent que j'ai appelé menuAlbum d'une ligne sur l'autre dans le cas où tu changes d'audio mais pas d'album, pour pouvoir ajouter chaque menuAudio au bon menuAlbum via addMenuComponent.

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Merci c_nvy,

    c impeKable !

  5. #5
    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
    Kool.

  6. #6
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Dernière petite question d'ordre esthétique :o

    Le treeview marche sans problème mais g insérer du code html dans mon action pour afficher plusieurs infos dans un tableau :

    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
     
     
            while (rs.next()){ 
     
    		 String nomAudio = rs.getString("nomAudio") ; 
     
              if ( ! nomAlbum.equals((rs.getString("nomAlbum")))){ 
     
    			  nomAlbum = rs.getString("nomAlbum"); 
    			  photoAlbum = rs.getString("photoAlbum"); 
     
                  menuAlbum = new MenuComponent() ; 
                  menuAlbum.setTitle("<table border=0><tr><td>"
    								+"<img src=images/pochetteAlbums/"+photoAlbum+" height=50 width=50></td>"
    								+"<td>"+nomAlbum+"</td></tr></table>") ; 
                  menu.addMenuComponent(menuAlbum) ; 
    		  }
                  String mp3 = rs.getString("cheminAudio");
    			  System.err.println("MP3 : "+mp3);
    			  MenuComponent menuAudio = new MenuComponent() ; 
                  menuAudio.setTitle("<table border='0'>"
    									+"<tr>"
    										+"<td width='25' align=center>"
    											+rs.getString("pisteAudio")
    										 +"</td> <td width='300'>"
    											+"<a href=javascript:change1('audio/"+mp3+"')>"
    												+rs.getString("nomAudio")
    				                            +"</a>"
    										 +"</td>"
    										 +"<td width='75' align=center>"
    											+rs.getString("tempsAudio")
    										+"</td>"
    										+"<td width='100' align=center>"
    											+"<a href='editAudio.do?idAudio="+rs.getString("idAudio")+"'>"
    												+"Modifier"
    											  +"</a>"
    										+"<td width='100' align=center>"
    											+"<a href='deleteAudio.do?idAudio="+rs.getString("idAudio")+"'>"
    												+"Supprimer"
    											  +"</a>"
    										+"</td>"
    										+"</td></tr></table>"); 
    			  menuAlbum.addMenuComponent(menuAudio) ; 
            } 
    	    	  LayoutUtils.addMenuIntoSession(request,menu);
    Je voudrai savoir si je peux faire pareil mais en mettant le code html dans une jsp et pas dans l'action. J'avais vu ce code sur le site de struts layout :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <layout:treeview>
    					<layout:menuItem key="treeview.menu1" link="link1.html"/>
    					<layout:menuItem key="treeview.menu2">
    						<layout:menuItem key="treeview.menu2.submenu1">
    							<layout:menuItem key="treeview.menu2.submenu1.item1" link="link2.html"/>
    							<layout:menuItem key="treeview.menu2.submenu1.item1" link="link3.html"/>
    						</layout:menuItem>
    						<layout:menuItem key="treeview.menu2.submenu2" link="link3.html"/>
    						<layout:menuItem key="treeview.menu2.submenu3" link="link4.html"/>		
    					</layout:menuItem>
    					</layout:treeview>

  7. #7
    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
    Et oui, c'est encore moi.
    Effectivement, c'est très moche.

    Dans l'Action, tu peux utiliser la méthode setLocation de MenuComponent comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    menuAudio.setLocation("editAudio.do?idAudio="+rs.getString("idAudio"));

  8. #8
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Yeah !

    Bon ok c moche :o

    Mais est ce Ke le setLocation peut etre employé 3 fois pour le meme MenuComponent (g deja trois liens pour une ligne).

    Et le code avec les <layout:treeview> qu'est ce t'en pense ?

    Au fait j'adore comment t'as écrit Kool

  9. #9
    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
    Tu ne pourras coder qu'un seul setLocation pour le même MenuComponent.

    En fait, il faudrait rajouter pour chaque menuAudio, 3 autres instances de MenuComponent (change, modifier, supprimer), les lier à chaque menuAudio via le addMenuComponent et mettre un setLocation sur change, modifier et supprimer plutôt que sur menuAudio.

    Je ne sais pas si je m'explique bien.

    Ton treeview serait composé de :

    +--nomAlbum1
    |__ nomAudio1
    |____ change
    |____ modifier
    |____ supprimer
    |__ nomAudio2
    |____ change
    |____ modifier
    |____ supprimer
    |__ nomAudio3
    |__ ... ... ...

    si j'ai bien compris ce que tu veux faire

    Quant au code dans la jsp avec les layout:menuItem, je n'ai jamais essayé mais je préfère de loin que tout soit codé dans l'action.

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Ok ! Donc c moche mais c la vie ! lol ! :o
    Merci encore ( je c je me repète)

  11. #11
    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
    Quelque chose comme ceci, ça ne te convient pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        MenuComponent menuAudio = new MenuComponent() ; 
        menuAudio.setTitle(nomAudio) ; 
        menuAlbum.addMenuComponent(menuAudio) ; 
     
        MenuComponent menuEdit = new MenuComponent() ;
        menuEdit.setTitle("Modifier") ;
        menuEdit.setLocation("editAudio.do?idAudio="+rs.getString("idAudio")); 
        menuAudio.addMenuComponent(menuEdit) ;
     
        MenuComponent menuDelete = new MenuComponent() ;
        menuDelete.setTitle("Supprimer") ;
        menuDelete.setLocation("deleteAudio.do?idAudio="+rs.getString("idAudio")); 
        menuAudio.addMenuComponent(menuDelete);
    Tu peux même utiliser la méthode setImage pour ton gif.

  12. #12
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Hey !!! Mais c pas possible de donner autant de tips !!!!

    Je v regarder la doc des struts-menu API'S . Mais g quand meme une question ... tt se qui est struts-layout, c pareil que les struts-menu ?

    Enfin je veux dire, c 2 struts-truK font référence aux meme API. C koi la différence ??? G vu que struts-menu venait de chez sun alors que struts-layout est plus propriétaire ? struts-layout ne peut pas etre utilisée librement ?

    non de non y en a marre de tt c questions !!!

  13. #13
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    163
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 163
    Par défaut
    Est ce que qq'un peut m'éclairer ?

  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
    J'ai eu l'occasion de tester Struts-Menu mais, quand je l'ai découvert, j'avais déjà mis en oeuvre Struts-Layout dans mon projet.Ce n'est donc pas une solution que j'ai retenu.
    Pour le treeview, par exemple, il a un plus par rapport à Struts-Layout parce qu'il est automatiquement constitué à partir d'un fichier xml.
    Il n'est donc pas nécessaire de créer une classe Action qui constitue le treeview.
    A toi de voir si ça peut convenir dans ton cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Struts-Layout] treeview racine
    Par david06600 dans le forum Struts 1
    Réponses: 1
    Dernier message: 10/11/2006, 16h10
  2. [struts layout]treeview et action
    Par david06600 dans le forum Struts 1
    Réponses: 2
    Dernier message: 08/11/2006, 17h17
  3. Réponses: 1
    Dernier message: 26/10/2006, 17h44
  4. [Struts-Layout] treeview et message resources
    Par Calahad dans le forum Struts 1
    Réponses: 12
    Dernier message: 02/10/2006, 10h01
  5. [Struts layout] Treeview
    Par Varroux dans le forum Struts 1
    Réponses: 4
    Dernier message: 11/07/2006, 12h01

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