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 :

Construction d'un menu dynamique - problème setActionExpression


Sujet :

JSF Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 57
    Points
    57
    Par défaut Construction d'un menu dynamique - problème setActionExpression
    Bonjour,

    Je sais que ce genre de question a probablement été déjà posé maintes fois, mais je n'arrive pas à créer un menu dynamique qui utilise une methode avec en paramètre un ActionEvent.

    Voici mon code :

    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
    //Ma méthode "type" action listener
    public void changeApplicationLanguage(ActionEvent e){...}
     
    //La génération de mon menu
    private void initMenuLanguage() {
            languageMenu = new HtmlMenuGroup();
            languageMenu.setValue("Langue...");
            Class<?>[] parameterList = new Class<?>[]{ActionEvent.class};
            MethodExpression me = FacesContext.getCurrentInstance().getApplication().getExpressionFactory().createMethodExpression(FacesContext.getCurrentInstance().getELContext(), "#{applicationFace.changeApplicationLanguage}", null, parameterList);
            HtmlMenuItem item;
            for (Language language:languageManager.getAllLanguages()) {
                item = new HtmlMenuItem();
                item.setId(language.getIsoCode());
                item.setSubmitMode("server");
                item.setValue(language.getName());
                item.setActionExpression(me);
                getLanguageMenu().getChildren().add(item);
            }
        }
    Lorsque je sélectionne une langue dans mon menu, j'ai l'exception suivante :

    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
    java.lang.IllegalArgumentException: wrong number of arguments
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        java.lang.reflect.Method.invoke(Method.java:585)
        org.apache.el.parser.AstValue.invoke(AstValue.java:131)
        org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
        javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
        com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
        javax.faces.component.UICommand.broadcast(UICommand.java:387)
        org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
        org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:317)
        org.ajax4jsf.component.AjaxViewRoot.broadcastEvents(AjaxViewRoot.java:292)
        org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:249)
        org.ajax4jsf.component.AjaxViewRoot.processApplication(AjaxViewRoot.java:462)
        com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
        com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
        com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
        javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
        org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:154)
        org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:260)
        org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:366)
        org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:493)
    Une idée de ce qui ne fonctionne pas?

  2. #2
    Membre expérimenté Avatar de nathieb
    Homme Profil pro
    DevOps
    Inscrit en
    Mai 2004
    Messages
    1 058
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DevOps
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 058
    Points : 1 532
    Points
    1 532
    Par défaut Et la page jsp
    Bonjour,

    m'ouias , tu peux envoyer la page de départ jsp ?

    olivier

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 109
    Points : 57
    Points
    57
    Par défaut
    En fait, chacune de mes pages contiennent le menu suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
             <h:form id="menu">
               <rich:toolBar>
                    <rich:toolBarGroup>
                        <rich:dropDownMenu value="Navigation">
                            <rich:menuItem submitMode="none" value="recherche" onclick="document.location.href='/brooklyn/pages/user/search.html';" />
                            <rich:menuItem submitMode="none" value="action" onclick="document.location.href='/brooklyn/pages/user/updateRequests.html';" />
                            <rich:menuGroup binding="#{applicationFace.languageMenu}"/>
                        </rich:dropDownMenu>
                        (...)
                    </rich:toolBarGroup>
                </rich:toolBar>
            </h:form>
    Et le code correspondant dans mon backing bean (applicationFace):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        private HtmlMenuGroup languageMenu;
     
        public HtmlMenuGroup getLanguageMenu() {
            if (languageMenu==null) initMenuLanguage();//Appelle la méthode décrite dans mon premier post
            return languageMenu;
        }
     
        public void setLanguageMenu(HtmlMenuGroup languageMenu) {
            this.languageMenu = languageMenu;
        }

Discussions similaires

  1. Problème menu dynamique dans le ruban
    Par ghosty177 dans le forum VSTO
    Réponses: 3
    Dernier message: 22/02/2011, 12h09
  2. [MySQL] Construction menu dynamique avec titre
    Par gtraxx dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 27/04/2009, 15h55
  3. Problème de sous menu dynamique [GTK+/C]
    Par DevMg dans le forum GTK+ avec C & C++
    Réponses: 5
    Dernier message: 28/09/2008, 20h00
  4. [PHP-JS] Problème dans un menu dynamique
    Par jujutonio dans le forum Langage
    Réponses: 8
    Dernier message: 07/02/2007, 15h32
  5. [HTML+CSS] Problème de menu "dynamique"
    Par Invité dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 06/04/2005, 12h48

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