我的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。
答案 0 :(得分:8)
尝试删除
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) { }
答案 1 :(得分: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>
答案 2 :(得分: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>
答案 3 :(得分:0)
尝试使用来自primefaces的ajax并仅刷新你想要刷新的内容