我对JSF中的单选按钮列表以及它对内容的反应有点困惑,而且我在网上找不到太多帮助。下面是我的单选按钮列表的声明,以及在单选按钮的值发生变化时应该调用的方法:
<h:selectOneRadio value="#{AddExpense.selectedTypeExp}" layout="pageDirection"
valueChangeListener="#{AddExpense.changed}">
<f:selectItems value="#{AddExpense.typeExpList}"/>
<a:support event="onclick" action="#{AddExpense.typeExpChanged}" immediate="true"/>
</h:selectOneRadio>
当我选择不同的值时,只调用typeExpChanged
,而不调用AddExpense.changed
方法。我想我在这里混淆了一些东西,不确定changeListener应该如何反应…下面是我的一个非常简单的测试方法,它应该被称为:
public void changed(ValueChangeEvent event){
System.out.println("In changed event method: "+event.getNewValue());
}
我应该在<a:support>
中改变一些东西吗?
我同时拥有event和valueChangeListener的原因是因为我想测试对我更改选择的反应。我只需要调用一个带参数的方法告诉我选择的值,这样我就可以加载其他东西了。提前感谢!
valueChangeListener
不是客户端事件侦听器。它是一个服务器端事件监听器。它不生成任何一行HTML/JS/Ajax代码,当您将表单提交给服务器并且提交的值与初始模型值不同时,它由JSF本身触发。
继续使用Ajax4jsf <a4j:support>
,它完全可以满足您的特定功能需求。