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

Taglibs Java Discussion :

forEach et création de menu [JSTL]


Sujet :

Taglibs Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 40
    Par défaut forEach et création de menu
    Bonjour,

    Je crée des pages à l'aide de templates : un pour l'affichage du contenu de la page, l'autre pour un sous-menu de navigation se trouvant à gauche de la page affichée. J'ai aussi un menu principal, se trouvant en haut de page, qui reste statique.
    La figure suivante devrait mieux expliquer :

    Bref : j'aimerais générer le menu de gauche en fonction du lien sur lequel l'utilisateur clique dans le menu principal.
    "Contenu1" -> sous-menu 1
    "Contenu2" -> sous-menu 2
    etc...
    J'ai donc une classe de génération de sous-menus, qui va ajouter ceux-ci à la session de mon utilisateur, sous forme de tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String[] sideMenuTitles = {"Titre1", "Titre2"};
    String[][] sideMenuItems = {{"Lien1.1","Lien1.2","Lien1.3"},{"Lien2.1","Lien2.2","Lien2.3"}};
    Ma question maintenant (on y arrive!) :
    Ma template doit générer un certain nombre de containers, dépendant du nombre de titres que l'utilisateur a en session. Chacun de ces containers doit ensuite contenir un nombre d'emplacement de liens dépendant du nombre de liens contenus pour un titre de mon tableau de titres...
    Je devrais donc avoir un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <c:forEach var="l'indice de mon titre dans le tableau" items="${sessionScope.sideMenuTitles}">
       <li>
          <h2><template:get name='"menu"  + l'indice + "Title"'/></h2>
             <ul>
                <c:forEach var="l'indice de mon lien dans le tableau" items="${sessionScope.sideMenuItems[l'indice de mon titre]}">
                   <li><template:get name='"menu" + l'indice de mon titre + "Link" + l'indice de mon lien/></li>
                </c:forEach>
             </ul>
       </li>
    </c:forEach>
    Et donc, comment je fais pour :
    - récupérer l'indice ?
    - créer les noms de variables en incluant l'indice dedans ?

    Pour les templates, j'ai utilisé les classes et les tags présentés ici

  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
    Si toutefois j'ai bien compris ce que tu veux faire, essaie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <c:forEach var="title" items="${sessionScope.sideMenuTitles}" varStatus="statutTitle">
       <li>
          <c:set var="menuTitle" value="menu${statutTitle.index}Title"/>
          <h2><template:get name="${menuTitle}"/></h2>
             <ul>
                <c:forEach var="lien" items="${sessionScope.sideMenuItems[statutTitle.index]}" varStatus="statutLien">
    		<c:set var="menuLien" value="menu${statutTitle.index}Link${statutLien.index}"/>
    		<li><template:get name="${menuLien}"/></li>
                </c:forEach>
             </ul>
       </li>
    </c:forEach>

  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
    Petite correction : Vu que l'index commence à 0, il faudrait y ajouter 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <c:forEach var="title" items="${sessionScope.sideMenuTitles}" varStatus="statutTitle">
       <li>
          <c:set var="menuTitle" value="menu${statutTitle.index + 1}Title"/>
          <h2><template:get name="${menuTitle}"/></h2>
             <ul>
                <c:forEach var="lien" items="${sessionScope.sideMenuItems[statutTitle.index]}" varStatus="statutLien">
    		<c:set var="menuLien" value="menu${statutTitle.index + 1}Link${statutLien.index + 1}"/>
    		<li><template:get name="${menuLien}"/></li>
                </c:forEach>
             </ul>
       </li>
    </c:forEach>

  4. #4
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 40
    Par défaut
    Tu as parfaitement compris ce que je voulais dire.. Merci mille fois!
    C'est parfait, nickel, génial... Sauf que maintenant j'ai une erreur HTTP404 sortie de nul part, avec un "the requested resource() is not available"...
    Donc je te dis quoi dès que j'ai résolu cet autre souci...

  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
    As-tu vérifié dans le html généré que les noms des templates correspondaient bien à ce que tu as défini ?

    EDIT : en fait, j'ai dit une bêtise parce que tu ne peux pas les voir vu que tu fais des get.
    Il faudrait ajouter des tags c:out pour voir les noms des titres et les noms des liens.

  6. #6
    Membre averti
    Inscrit en
    Décembre 2002
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 40
    Par défaut
    Effectivement, je fais des GET...
    Sinon, pour le 404, c'est au niveau de Glassfish que ça se passe... Même en modifiant ma page d'index avec un "hello world", l'erreur s'affiche.
    Et pourtant, mon web.xml est bien configuré, mon fichier de hosts aussi...

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

Discussions similaires

  1. Création de Menu dynamique
    Par Soria17 dans le forum ASP
    Réponses: 7
    Dernier message: 30/03/2007, 10h26
  2. Création de menu déroulant
    Par laurentSc dans le forum Mise en page CSS
    Réponses: 18
    Dernier message: 12/03/2007, 16h58
  3. Création de menu
    Par madness dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/05/2006, 23h38
  4. [C#] Pb de création de menu dynamiques
    Par albireo dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/12/2005, 16h49
  5. [dvd] création de menu
    Par FFF dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 06/08/2005, 09h37

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