"onchange"不适用于PrimeFaces 3.2中的selectOneMenu

Dan*_*jel 2 jsf primefaces

我的selectOneMenu没有触发onchange事件.这是代码:

 <p:selectOneMenu id="select_preset" 
                  value="#{JobMgmtBean.presetGroupName}" 
                  valueChangeListener="#{PFJobMgmtBean.PresetGroupChangeEvent}" 
                  onchange="submit();">
    <f:selectItems value="#{JobMgmtBean.presetGroupList}"/>
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

selectOneMenu填充得很好,我可以选择不同的值.但我希望在更改选择后,页面会刷新,即重新创建支持bean(RequestScoped)(onchange ="submit();")?但是当selectOneMenu中的选择发生变化时,没有任何反应.

此外,不会调用值更改侦听器PresetGroupChangeEvent().

我在某处出错了吗?

我正在使用Tomcat 7.0.25 + MyFaces 2.1.6 + PrimeFaces 3.2.

小智 8

试着删除

onchange="submit();"
Run Code Online (Sandbox Code Playgroud)

并添加

<p:ajax update="@this"/>
Run Code Online (Sandbox Code Playgroud)

当你使用primefaces时,从你的p:selectOneMenu

<p:selectOneMenu id="select_preset" 
              value="#{JobMgmtBean.presetGroupName}" 
              valueChangeListener="#{PFJobMgmtBean.PresetGroupChangeEvent}">
    <f:selectItems value="#{JobMgmtBean.presetGroupList}"/>
    <p:ajax update="@this"/>
</p:selectOneMenu>
Run Code Online (Sandbox Code Playgroud)

检查你的听众签名(从大"P"开始?)

import javax.faces.event.ValueChangeEvent;
public void PresetGroupChangeEvent(ValueChangeEvent event) { }
Run Code Online (Sandbox Code Playgroud)