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 :
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 //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); } }
Une idée de ce qui ne fonctionne 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
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)
Partager