0

を使用し<h:selectOneMenu>て状態値をバッキング Bean に送信しています。クリックする<h:commandLink>と、Bean で値が正しく取得されます (log.debugメッセージ内)。ただし、ページがリロードされると、選択した State が失われ、一番上 (NY) の State が UI に表示されます。選択した値を保持するべきではありませんか? どんな提案でも大歓迎です。

JSF 1.2 を使用しています。

JSP:

<h:selectOneMenu id="state" value="#{stateBean.stateName}"> 
    <f:selectItem itemValue="NY" itemLabel="New York" />
    <f:selectItem itemValue="CA" itemLabel="California" />
    <f:selectItem itemValue="NE" itemLabel="Nebraska" />
    <f:selectItem itemValue="AK" itemLabel="Alaska" />
</h:selectOneMenu>

<h:commandLink action="#{stateBean.sendStateAction}">

マネージド Bean:

private String stateName;

log.debug("state name: " + stateName);

public String getStateName() {
    return stateName;
}
public void setStateName(String name) {
    this.stateName = name;
}
4

1 に答える 1

1

おそらく、マネージド Bean はリクエスト スコープとして設定されています。スコープに変更するとsession、ユーザーセッションがまだ生きている間、Bean を使用できます。viewJSF 1.2 にはスコープがないため、データをセッションに保存して Bean のコンストラクターで復元するか、これを処理するサード パーティ ライブラリを使用することができます。詳細: JSF 1.2: 同じビューのポストバック間でリクエスト スコープのマネージド Bean を維持する方法は? 私は RichFaces を使用@KeepAliveして、自分の仕事に取り組んできました。

于 2013-06-23T15:12:08.950 に答える