0

ナビゲーション用の[次へ]ボタンと[前へ]ボタンを備えたマルチページアプリケーションフォーム(jsf 1.2)があります。これらのページは、以下の要件に準拠している必要があります。

1)ページが部分的に埋められている場合でも、ユーザーはこれらのページを前後に移動できるようにする必要があります。必須のフィールド検証は、彼が画面間を移動するのを止めるべきではありません。

2)また、彼がページに入力したデータは、彼がそのページに戻ったときに復元する必要があります。

エラーの場合、jsfは常に同じビューにポストバックしますが、プロセス検証コールバックの後にフェーズリスナー内でナビゲーションハンドラーを使用することでこれを解決しました。

しかし、新しいページをレンダリングする前に、どうすれば現在の状態を保存できますか。レンダリングフェーズの前にUIViewでsaveStateを呼び出そうとしましたが、機能しませんでした。どうすればこれを解決できますか?

これらの要件に対処するための最良の方法は何ですか。これに対する答えをいただければ幸いです。ありがとう。

制約:これはjsf 1.2で対処する必要があり、jsf2.0の会話型状態やtomahawksavestateのようなサードパーティソリューションには対応できません:(

4

1 に答える 1

0

JSF 1.2 に固執する必要がある場合は、それはできません。Bean で処理するすべてのデータをセッションに保存し、Bean コンストラクターですべてを回復する必要があります。サードパーティのライブラリを使用できる場合は、RichFaces 3.3.3 をお勧めします。これには、KeepAliveリクエスト マネージド Bean に付けて ViewBean に変換できるアノテーションがあります (リクエスト Bean 全体をセッションに保存してロードすることにより)。あなたが同じビューにいる場合)。

注釈の例KeepAlive(見た目はシンプルです):

@KeepAlive
public class MyViewWannaBeBean {
    private String name;
    public MyViewWannaBeBean() {
    }
    //getters and setters...
}

リクエスト マネージド Bean のように、faces-config.xml で Bean を定義します。

<managed-bean>
    <managed-bean-name>myViewWannaBe</managed-bean-name>
    <managed-bean-class>mypackage.MyViewWannaBeBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
于 2012-06-15T01:28:48.187 に答える