0

国と州の 2 つのドロップダウン リストがあります。国リストの選択を変更したときに州リストをリロードしたい。selectOneMenu でリスナーに値を渡す方法を試しました。ただし、私のコードの変更イベントは機能しません。誰でも私を助けることができますか?ありがとうございました。

国と州のドロップダウン

<h:selectOneMenu id="ddlCountry" value="#{Bean.companyCountry}" >
    <f:selectItems value="#{Bean.countries}" var="country" itemValue="#{country.value}" itemLabel="#{country.name}" />
    <f:ajax event="change" listener="#{Bean.loadStates}" render="ddlState" execute="@this"/>
</h:selectOneMenu>

<h:selectOneMenu id="ddlState" value="#{Bean.companyState}">
    <f:selectItems value="#{Bean.states}" var="state" itemValue="#{state.value}" itemLabel="#{state.name}" />
</h:selectOneMenu>

Java Bean クラスsscce

private ArrayList<State> states;
public ArrayList<State> getStates() {
    return states;
}
public void loadStates(AjaxBehaviorEvent event) {
    states = new ArrayList<State>();
    if(companyCountry.equals("USA")){
        states.add(new State("1","UT"));
        states.add(new State("2","WA"));
        states.add(new State("3","CA"));
    }
}

プロジェクトで jsf ajax リスナーがまだ機能しません。だから私はprimefacesタグを使用しましたが、それは私の問題を解決することができます.

<h:selectOneMenu id="ddlCountry" value="#{Bean.companyCountry}"  >
    <f:selectItems value="#{Bean.countries}" var="country" itemValue="#{country.value}" itemLabel="#{country.name}" />
    <p:ajax event="valueChange" update="ddlState" process="@this"/>
</h:selectOneMenu>

<h:selectOneMenu id="ddlState" value="#{Bean.companyState}">
    <f:selectItems value="#{Bean.states}" var="state" itemValue="#{state.value}" itemLabel="#{state.name}" />
</h:selectOneMenu>

Java Bean クラスsscce

private ArrayList<State> states;
public ArrayList<State> getStates() {
    states = new ArrayList<State>();
    if(companyCountry.equals("USA")){
        states.add(new State("1","UT"));
        states.add(new State("2","WA"));
        states.add(new State("3","CA"));
    }
    else{
        states.clear();
    }
    return states;
}
4

1 に答える 1

0

Beanスコープをから@RequestScopedに変更します@ViewScoped

それ以外の場合は、メソッドを呼び出した直後にlistener、Beanの新しいインスタンスが作成され、他のインスタンスにはh:selectOneMenu空の値が入力されます

于 2012-12-24T10:16:32.927 に答える