2

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

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

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

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

我是不是哪里出错了?

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

4

4 回答 4

9

尝试删除

onchange="submit();"

并添加

<p:ajax update="@this"/>

当您使用 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>

检查您的听众签名(从大“P”开始?)

import javax.faces.event.ValueChangeEvent;
public void PresetGroupChangeEvent(ValueChangeEvent event) { }
于 2012-05-15T06:55:21.610 回答
1

为什么不使用 p:ajax 添加更新属性?我认为重新渲染组件比刷新更好的解决方案,您也可以只重新渲染所需的组件。但如果您仍想刷新页面,您也可以使用 javascript:

<p:selectOneMenu id="select_preset" value="#{JobMgmtBean.presetGroupName}" onchange="window.location.reload();">
    <f:selectItems value="#{JobMgmtBean.presetGroupList}"/>
</p:selectOneMenu>

并且只是为了更新必要的组件:

 <p:selectOneMenu id="select_preset" value="#{JobMgmtBean.presetGroupName}">
    <f:selectItems value="#{JobMgmtBean.presetGroupList}"/>
    <p:ajax event="change" update="@form" />
</p:selectOneMenu>
于 2012-04-10T09:18:28.963 回答
1

这对我有用

<p:selectOneMenu id="select_preset" 
                  value="#{JobMgmtBean.presetGroupName}" 
                  valueChangeListener="#{PFJobMgmtBean.PresetGroupChangeEvent}">
        <f:selectItems value="#{JobMgmtBean.presetGroupList}"/>
        <p:ajax process="select_preset" partialSubmit="true" event="valueChange"  update="yourComponentName"/>
    </p:selectOneMenu>
于 2014-03-05T07:06:55.860 回答
0

尝试使用 primefaces 中的 ajax 并仅刷新您想要刷新的内容

于 2013-02-04T21:50:50.323 回答