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 !

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);
Par contre si je veux lui passer des arguments... je sais pô faire
J'ai tenté comme ceci (en fait il y a un seul paramètre en entrée, de type String) :
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);
J'obtiens un message d'erreur :
java.lang.IllegalArgumentException: wrong number of arguments
Lors d'une autre tentative j'ai remplacé :
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}));
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[1]));
Mais j'obtiens l'erreur :
javax.faces.el.MethodNotFoundException: java.lang.NullPointerException

Si quelqu'un peux m'aider ce serait vraiment coooooool !!