Вы действительно можете использовать Richfaces для добавления компонента a4j:support:
<h:selectOneRadio value="#{myBean.myValue}" ...>
...
<a4j:support event="onclick" action="#{myBean.doSomething}"/>
</h:selectOneRadio>
В вашем Java-коде:
public String doSomething() {
// Your code goes here...
...
// Now, we move to the new page.
return "some-outcome";
}
Однако, если вы не можете (или не хотите) добавлять новую библиотеку, вы можете сделать это по-старому:
<h:selectOneRadio value="#{myBean.myValue}" ... onclick="this.form.submit();" valueChangeListener="#{myBean.doSomething}">
...
</h:selectOneRadio>
Этот код отправит форму, в которой содержится переключатель, при обнаружении события Javascript onclick. На стороне сервера будет выполнено действие doSomething. В этом методе вы можете сделать так, чтобы правило навигации выполнялось:
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");
}
где некоторый результат — это результат, определенный в правиле навигации в файлеfaces-config.xml.
person
Romain Linsolas
schedule
27.01.2009