Pass HTTP GET paramètre à un bean JSF méthode
je veux passer paramètre GET de l'URL d'une méthode, qui a appelé en cliquant sur le bouton.
Pour exemple, j'ai l'URL: /someurl/semepage.xhtml?id=1. Et j'ai un bouton sur ma page:
<p:commandButton value="say it" action="#{test.sayIt(param['id'])}"/>
Le haricot ressemble:
@ManagedBean
@ViewScoped
public class Test{
public void sayIt(String value){
System.out.println(value);
}
}
Mais quand je suis en cliquant sur le bouton, c'est juste de ne pas réagir. Pourquoi est-ce arrivé ? Méthode, même pas appelé.
Si je passe arguments staticaly comme ici:
<p:commandButton value="say it" action="#{test.sayIt('someword')}"/>
tout est ok.
Vous devez vous connecter pour publier un commentaire.
Ici est une manière - à l'aide de la
<f:param
, comme ceci:Et dans votre bean
@Daniel réponse est OK, mais ici, il va de plus simple JSF 2-ish alternative pour votre affaire, à l'aide de
<f:viewParam />
et EL passage de paramètres. Remarque le<f:ajax />
n'est pas nécessaire dans ce cas, comme<p:commandButton />
a ajax comportement par défaut.Testé avec JSF 2.2.5 et Primefaces 4. Souvenez-vous de changer la balise espaces de noms dans le cas de l'utilisation de JSF 2.1.x.
#{bean.sayIt(param.id)}
Juste pour le plaisir de celui-ci, avez-vous essayé
request.getParameter('id')
?