Vous pouvez en effet utiliser RichFaces pour ajouter un a4j:support component:
<h:selectOneRadio value="#{myBean.myValue}" ...>
...
<a4j:support event="onclick" action="#{myBean.doSomething}"/>
</h:selectOneRadio>
Dans votre code Java:
public String doSomething() {
// Your code goes here...
...
// Now, we move to the new page.
return "some-outcome";
}
Cependant, si vous ne pouvez pas (ou ne veulent pas) à ajouter une nouvelle bibliothèque, vous pouvez le faire par l'ancienne façon:
<h:selectOneRadio value="#{myBean.myValue}" ... onclick="this.form.submit();" valueChangeListener="#{myBean.doSomething}">
...
</h:selectOneRadio>
Ce code va soumettre le formulaire où le bouton radio est contenu lorsque l'événement onclick Javascript est détecté. Côté serveur, l'action doSomething sera exécutée. Dans cette méthode, vous pouvez faire une règle de navigation à exécuter:
public void doSomething(ValueChangeEvent evt) {
// Your code goes here...
...
// Now, we move to another page...
FacesContext context = FacesContext.getCurrentInstance();
NavigationHandler navigation = context.getApplication().getNavigationHandler();
navigation.handleNavigation(context, "", "some-outcome");
}
où certains-résultat est un résultat défini dans une règle de navigation sur vos visages-config.xml.