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 を使用して update 属性を追加しないのはなぜですか? コンポーネントを再レンダリングすることは、更新するよりも優れたソリューションだと思います。また、必要なコンポーネントを再レンダリングすることもできます。それでもページを更新したい場合は、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 に答える