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 :

Créer un menu dynamiquement


Sujet :

JSF Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut Créer un menu dynamiquement
    Bonjour
    Je voudrais créer un menu dynamiquement c'est à dire stocker les liens dans une base de donnée et afficher les liens du menu comme une liste sur la page.

    Par exemple en prenant le panelMenu de richfaces (mais le principe vaut pour tout autre objet):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
          <rich:panelMenu mode="server">
     
              <rich:panelMenuGroup label="groupe 1" action="#{bean.action}"> 
     
                  <rich:panelMenuItem label="menu 1" action="#{capitalsBean.action}"> 
                  </rich:panelMenuItem> 
                  <rich:panelMenuItem label="menu 2" action="#{capitalsBean.action}"> 
                  </rich:panelMenuItem> 
                  <rich:panelMenuItem label="menu 3" action="#{capitalsBean.action}"> 
                  </rich:panelMenuItem> 
     
              </rich:panelMenuGroup>
     
          </rich:panelMenu>
    Ici donc le menu est "statique" : il y a 3 points de menu.
    A la place, je voudrais faire une requête sur une base de donnée et afficher autant de menu qu'il n'y a de record dans cette table.

    Comment dois-je faire cela? Je dois générer le code JSF dans mon bean? J'ai trovué ça, mais l'exemple n'est pas fonctionnel... : http://www.developpez.net/forums/d60...ionexpression/

    Personne n'aurait un exemple ou au moisn me confirmer que c'est bien dans cette voie que je dois chercher?

    Merci de votre aide.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2008
    Messages : 152
    Points : 94
    Points
    94
    Par défaut
    Salut,

    Je ne sais pas si ça peut fonctionner mais c'est peutêtre une piste à explorer :

    Tu fais un <ui:repeat> dans ton <rich:panelGroup>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
          <rich:panelMenu mode="server">
     
              <rich:panelMenuGroup label="groupe 1" action="#{bean.action}"> 
     
                  <ui:repeat value=#{tonBean.taListe} var="_item">
                          <rich:panelMenuItem label="#{_item.label}" action="#{_item.action}"> 
                  </rich:panelMenuItem> 
     
                  </ui:repeat>
     
              </rich:panelMenuGroup>
     
          </rich:panelMenu>
    Avec dans ton bean une requête te permettant de récupérer les différents éléments de ton menu.
    J'ai un doute sur l'action du panelMenuGroup, mais c'est à tester

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Bonne idée mais j'ai essayé (avec a4j:repeat car je n'ai pas ui ne faisant pas de facelet, enfin je suppose que c'est pour ça) et ça ne me donne aucune erreur mais ça n'affiche rien .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <a4j:repeat value="#{ContactBean.truc}" var="unTruc">
    						<rich:menuItem submitMode="ajax" value="unTruc"/>
    					</a4j:repeat>

  4. #4
    Membre régulier Avatar de VirageGroup
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 81
    Points : 95
    Points
    95
    Par défaut
    Effectivement le menuitem necessite d'etre directement sous le menuGroup. Donc on ne peut pas mettre de a4j:repeat entre les deux.

    L'utilisation du c:foreach m'a aussi posé des problèmes...

    La seule façon que nous avons trouvée est de générer les menus en java et de faire un binding.

    Dans la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <rich:menuGroup id="menuActions" 
    			binding="#{MenuBean.menuActions}">
    Dans MenuBean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public HtmlMenuGroup getMenuActions() {
     
    menu = new HtmlMenuGroup();
    ....
     
    HtmlMenuItem item = new HtmlMenuItem();
    htmlMenuGroup.getChildren().add(item);    
    ...
    }
    Attention, a la generation des id pour eviter les duplicate id

    VG

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 129
    Points : 81
    Points
    81
    Par défaut
    Citation Envoyé par VirageGroup Voir le message
    Effectivement le menuitem necessite d'etre directement sous le menuGroup. Donc on ne peut pas mettre de a4j:repeat entre les deux.

    L'utilisation du c:foreach m'a aussi posé des problèmes...

    La seule façon que nous avons trouvée est de générer les menus en java et de faire un binding.

    Dans la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <rich:menuGroup id="menuActions" 
    			binding="#{MenuBean.menuActions}">
    Dans MenuBean.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public HtmlMenuGroup getMenuActions() {
     
    menu = new HtmlMenuGroup();
    ....
     
    HtmlMenuItem item = new HtmlMenuItem();
    htmlMenuGroup.getChildren().add(item);    
    ...
    }
    Attention, a la generation des id pour eviter les duplicate id

    VG
    Merci pour votre réponse. Mais je me demande : utilisez vous les facelets? Car j'ai lu sur le forum de jboss/richfaces qu'il y avait un bug avec ce type de programmation en richaces supérieur à 3.2.0 et les JSP (moi je suis en jsp...).

  6. #6
    Membre régulier Avatar de VirageGroup
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 81
    Points : 95
    Points
    95
    Par défaut
    non, JSP aussi

    VG

Discussions similaires

  1. Créer un menu dynamique à partir d'un XML
    Par moniayousfi dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 24/03/2015, 20h40
  2. [Toutes versions] Créer un menu dynamique de navigation par onglet & classeur ergonomique.
    Par Amaury_Lille dans le forum Conception
    Réponses: 0
    Dernier message: 20/10/2013, 09h19
  3. Comment créer un menu dynamique déroulant ?
    Par sylvain640 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/02/2012, 11h12
  4. créer un menu dynamique
    Par deud5 dans le forum Dynamique
    Réponses: 1
    Dernier message: 08/09/2008, 18h34
  5. Créer un menu dynamique (appele de pages externe)
    Par pierrot10 dans le forum ASP
    Réponses: 2
    Dernier message: 28/11/2005, 08h35

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