我的h:selectOneRadio上没有调用ValueChangeListener方法

时间:2011-04-28 14:10:44

标签: jsf java-ee seam

我对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的原因是因为我想测试对我更改选择的反应。我只需要一个方法来调用一个参数,告诉我所选的值,所以我可以加载其他东西。 提前谢谢!

1 个答案:

答案 0 :(得分:1)

valueChangeListener不是客户端事件监听器。它是服务器端事件监听器。它不生成任何HTML / JS / Ajax代码行,当您将表单提交到服务器并且提交的值与初始模型值不同时,它由JSF本身触发。

继续使用Ajax4jsf <a4j:support>,它完全适合您的特定功能需求。