Bonjour,
Je réalise un composant JSF personnalisé, qui doit afficher des liens (entre autres).
Ces liens fonctionnent lorsqu'ils sont décris, via des balises, dans ma page JSF; mais lorsque je veux construire des liens semblable en JAVA, ça bloque !
La partie qui me pose problème est l'appelle d'une méthode de mon managed bean lors d'un clic : si j'appelle une méthode sans argument en entrée, OK ça fonctionne !
Par contre si je veux lui passer des arguments... je sais pô faire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 linkOk = (HtmlCommandLink)context.getApplication().createComponent(HtmlCommandLink.COMPONENT_TYPE); linkOk.setActionExpression(context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), "#{monBean.maMethodeSansArg}", null, new Class[0])); form = new HtmlForm(); this.getChildren().add(form); form.getChildren().add(linkOk);
J'ai tenté comme ceci (en fait il y a un seul paramètre en entrée, de type String) :
J'obtiens un message d'erreur :
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 linkKo = (HtmlCommandLink)context.getApplication().createComponent(HtmlCommandLink.COMPONENT_TYPE); linkKo.setActionExpression(context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), "#{monBean.maMethodeAvecArgString}", null, new Class[] {String.class})); //Parametre UIParameter parameter = (UIParameter)context.getApplication().createComponent(UIParameter.COMPONENT_TYPE); parameter.setId("paramId"); parameter.setTransient(false); parameter.setName("paramName"); parameter.setValue("laValeur"); linkKo.getChildren().add(parameter); form = new HtmlForm(); this.getChildren().add(form); form.getChildren().add(linkKo);
Lors d'une autre tentative j'ai remplacé :java.lang.IllegalArgumentException: wrong number of arguments
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 linkKo.setActionExpression(context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), "#{monBean.maMethodeAvecArgString}", null, new Class[] {String.class}));
Mais j'obtiens l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 linkKo.setActionExpression(context.getApplication().getExpressionFactory().createMethodExpression(context.getELContext(), "#{monBean.maMethodeAvecArgString}", null, new Class[1]));
javax.faces.el.MethodNotFoundException: java.lang.NullPointerException
Si quelqu'un peux m'aider ce serait vraiment coooooool !!
Partager