ValueChangeListener未被调用

时间:2014-03-07 08:34:42

标签: jsf primefaces listener

这是我的faces.config的片段。

我正在使用方法绑定方法来使用值更改侦听器事件

<managed-bean>    
    <managed-bean-name>MenuBean</managed-bean-name>
    <managed-bean-class>mtr.MenuBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>

<p:selectOneMenu style="width:300px;" value="#{MenuBean.stateList}" onchange="submit()" valueChangeListener="#{MenuBean.Change}">
    <f:selectItem itemLabel="Select One"></f:selectItem>
    <f:selectItems value="#{MenuBean.stateList}" itemValue="#{MenuBean.stateList}"></f:selectItems>                         
</p:selectOneMenu>

public void Change(ValueChangeEvent event) {
    System.out.println("I CHANGED");
    System.out.println(event.getSource().toString());
}

尽管做了这一切,我的价值变化听众仍未被调用。

1 个答案:

答案 0 :(得分:0)

请尝试以下操作:使用p:ajax

<p:selectOneMenu style="width:300px;" value="#{MenuBean.stateList}">
    <f:selectItem itemLabel="Select One"/>
    <f:selectItems value="#{MenuBean.stateList}" itemValue="#{MenuBean.stateList}"/>
    <p:ajax listener="#{MenuBean.stateChange}" update="componentid_you_want_to_update"/>
</p:selectOneMenu>

public void stateChange(AjaxBehaviorEvent event) {
    System.out.println("I CHANGED");
    System.out.println(event.getSource().toString());   
}

<强>更新

我不清楚你的代码

<p:selectOneMenu style="width:300px;" value="#{MenuBean.stateList}">

<f:selectItems value="#{MenuBean.stateList}"

为什么使用相同的EL #{MenuBean.stateList}
我想,EL的{​​{1}}将失踪。它应该像p:selectOneMenu