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 :

Menu dynamique JSP


Sujet :

Servlets/JSP Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut Menu dynamique JSP
    Bonjour Messieurs,
    Je souhaite avoir un coup de pouce pour afficher un menu dynamique sur ma page.
    J'ai la liste des menus dans le controller
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    model.addAttribute("user", getPrincipal());
            List<Menu> menus = getUserMenu();        
            model.addAttribute("menus", menus);
    Dans la page Jsp j'ai:
    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
    <ul id="menu">
             <c:forEach var="menu1" items="${menus }">
             <li><a href="#">${menu1.name}</a>
               <c:choose>
    	         <c:when test="${menu1.menus.size()==0}"> value vaut 0 (0) </c:when>
    	         <c:otherwise>
    		          value vaut ${menu1.menus.size()} (?)
    		          <ul>
    		            Iteraion menu Item
                        <c:forEach var="menu2" items="${$menu1.menus}">
                           <c:out value="Menu Item  nom : ${menu2.name}  action : ${menu2.action}"/>
                           <li><a href="#">${menu2.name}</a></li>
                        </c:forEach>
                        <c:forEach var = "i" begin = "1" end = "${menu1.menus.size()}">
                            <li><a href="#">${i}</a></li>
                        </c:forEach>
                      </ul> 
    	         </c:otherwise>
               </c:choose>
    le résultat est le suivant :

    Nom : menu.jpg
Affichages : 324
Taille : 39,0 Ko

    Sur l'image on constate que c'est la boucle en gras ne s'est pas exécutée. C'est la boucle juste en dessous qui s'est exécute.
    Pour info dans la console il affiche bien les sous menus

    Code Java : 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
    for (Menu m : allmenus) {
           	  //System.out.println("Menu : " + m.toString());
           	  String[] roles = m.getRoles().stream().map(a -> a.getRole().getName()).toArray(String[]::new);
           	  /*for (String r : roles) {
               	  System.out.println("role Menu : " + r);
              }*/
     
           	  /*for (String c : roles) {
           		  if ( Arrays.asList(authorities).contains(c) ) { 
           			  boolean retval = usermenus.contains(m);
           			  if (retval == false) {
           				  usermenus.add(m);
           				  System.out.println(" ********************* menu user : " + m.toString() + "size :" + m.getMenus().size());
           			  }
           		  }
           	  }*/
     
            	  if (m.getMenus().size() > 0 ) {
            		 for (Menu m1 : m.getMenus()) {
            			System.out.println("Menu : " + m.toString() + "Menu Item : " + m1.toString());
            			String[] roles1 = m1.getRoles().stream().map(a -> a.getRole().getName()).toArray(String[]::new);
            			for (String r1 : roles1) {
            	           System.out.println("role Menu Item : " + r1);
            	        }
     
            			/*for (String c : roles) {
            	    		  if ( Arrays.asList(authorities).contains(c) ) { 
            	    			  boolean retval = usermenus.contains(m1);
            	    			  if (retval == false) {
            	    				  usermenus.add(m1);
            	    				  System.out.println(" ********************* menu user : " + m1.toString());
            	    			  }
            	    		  }
            	    	  }*/
            		 }
            	  } 
             }

    role Menu Item : ROLE_PUBLIC
    Menu : Menu: 1, Session, null, trueMenu Item : Menu: 3, Modification de Mot de Passe, null, true
    role Menu Item : ROLE_PUBLIC
    Menu : Menu: 1, Session, null, trueMenu Item : Menu: 4, Messagerie, null, true
    role Menu Item : ROLE_PUBLIC
    Menu : Menu: 1, Session, null, trueMenu Item : Menu: 5, Gestion Utilisateur, null, true
    role Menu Item : ROLE_PUBLIC
    Menu : Menu: 1, Session, null, trueMenu Item : Menu: 10, Quitter, null, true
    role Menu Item : ROLE_PUBLIC
    Menu : Menu: 12, Menu 1, null, trueMenu Item : Menu: 14, Menu Item 1.1, null, true
    role Menu Item : ROLE_USER
    Menu : Menu: 12, Menu 1, null, trueMenu Item : Menu: 15, Menu Item 1.2, null, true
    role Menu Item : ROLE_USER
    Menu : Menu: 12, Menu 1, null, trueMenu Item : Menu: 16, Menu Item 1.3, null, true
    role Menu Item : ROLE_USER
    Menu : Menu: 13, Menu 2, null, trueMenu Item : Menu: 17, Menu Item 2.1, null, true
    role Menu Item : ROLE_USER
    Menu : Menu: 13, Menu 2, null, trueMenu Item : Menu: 18, Menu Item 2.2, null, true
    role Menu Item : ROLE_USER
    Menu : Menu: 20, Menu 4, null, trueMenu Item : Menu: 21, Menu Item 4.1, null, true
    role Menu Item : ROLE_USER

    Le problème c'est au niveau des lignes en gras. la boucle n'est pas exécutée.
    j'ai rajouté la boucle après pour m'assurer que la liste des menus rattachés au menu principal n'est pas 0.

  2. #2
    Membre régulier
    Inscrit en
    Mai 2003
    Messages
    350
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 350
    Points : 84
    Points
    84
    Par défaut
    test des sous menus dans le menu:
    dans le controller:
    Code Java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for (Menu m : allmenus) {
           	  System.out.println(" ********************************* Menu : " + m.toString());
              if (m.getMenus().size() > 0 ) {
            	  for (Menu m1 : m.getMenus()) {
            		  System.out.println(" Menu : " + m.toString() + "Menu Item : " + m1.toString());  
            	  }
           	  }

    console
    ********************************* Menu : Menu: 1, Session, null, true
    Menu : Menu: 1, Session, null, true Menu Item : Menu: 2, Reconnexion, /logout, true
    Menu : Menu: 1, Session, null, true Menu Item : Menu: 3, Modification de Mot de Passe, null, true
    Menu : Menu: 1, Session, null, true Menu Item : Menu: 4, Messagerie, null, true
    Menu : Menu: 1, Session, null, true Menu Item : Menu: 5, Gestion Utilisateur, null, true
    Menu : Menu: 1, Session, null, true Menu Item : Menu: 10, Quitter, null, true
    ********************************* Menu : Menu: 12, Menu 1, null, true
    Menu : Menu: 12, Menu 1, null, true Menu Item : Menu: 14, Menu Item 1.1, null, true
    Menu : Menu: 12, Menu 1, null, true Menu Item : Menu: 15, Menu Item 1.2, null, true
    Menu : Menu: 12, Menu 1, null, true Menu Item : Menu: 16, Menu Item 1.3, null, true
    ********************************* Menu : Menu: 13, Menu 2, null, true
    Menu : Menu: 13, Menu 2, null, true Menu Item : Menu: 17, Menu Item 2.1, null, true
    Menu : Menu: 13, Menu 2, null, true Menu Item : Menu: 18, Menu Item 2.2, null, true
    ********************************* Menu : Menu: 19, Menu 3, null, true
    ********************************* Menu : Menu: 20, Menu 4, null, true
    Menu : Menu: 20, Menu 4, null, true Menu Item : Menu: 21, Menu Item 4.1, null, true
    DANS la 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
    <ul id="menu">
             <c:forEach var="menu1" items="${menus }">
             <li><a href="#">${menu1.name}</a>
               <c:choose>
    	         <c:when test="${menu1.menus.size()==0}"> value vaut 0 (0) </c:when>
    	         <c:otherwise>
    		          value vaut ${menu1.menus.size()} (?)
    		          <ul>
    		            Iteraion menu Item
                        <c:forEach var="menu2" items="${$menu1.menus}">
                           <c:out value="Menu Item  nom : ${menu2.name}  action : ${menu2.action}"/>
                           <li><a href="#">${menu2.name}</a></li>
                        </c:forEach>
                        <c:forEach var = "i" begin = "1" end = "${menu1.menus.size()}">
                            <li><a href="#">${i}</a></li>
                        </c:forEach>
                      </ul> 
    	         </c:otherwise>
               </c:choose>
                
             </li>
             </c:forEach>
    	   </ul>
    malheureusement dans la JSP les sous menu ne s'affichent pas car la boucle en gras n'est pas exécutée

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

Discussions similaires

  1. [JSP]Gestion d'un menu dynamique
    Par joebarteam88 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 16/08/2005, 12h35
  2. [Free Pascal] Intégrer des valeurs dans un menu dynamique
    Par boullery dans le forum Free Pascal
    Réponses: 16
    Dernier message: 30/03/2005, 17h04
  3. Créer un sous-menu dynamiquement
    Par PurL dans le forum C++Builder
    Réponses: 4
    Dernier message: 09/09/2004, 10h31
  4. [JSP]menu dynamique en jsp
    Par laouedjahmed dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 22/03/2004, 10h50
  5. Menu dynamique sous Flash MX
    Par dens63 dans le forum Flash
    Réponses: 7
    Dernier message: 29/10/2003, 15h46

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