0

私の JSF の 1 つは、メタデータと f:ViewParm タグを介してパラメーターを受け取ります。これらのパラメーターを事前レンダリング ビューのバッキング Bean で使用して、データベースにクエリを実行し、データ テーブル ビューのリストを作成しています。正常に動作していますが、今は lazyDataModel に切り替える必要があります (私は Primefaces 3.2 を使用しています)。例に従えば、バッキング Bean のコンストラクターで行われる LazyDataModel を実装する必要があります。それはできますが、パラメーターにアクセスできません。私の質問は、パラメーターを取得して、LazyDataModel (LazyCarDataModel など) を実装するクラスに渡す方法です。これらのパラメーターを LazyCarDataModel のオーバーライドされた load メソッドで使用したいと考えています。コンストラクターで着信パラメーターにアクセスする方法はありません。この状況を処理するための提案/トリックをいただければ幸いです。

ピーター

4

1 に答える 1

1

<f:event type="preRenderView">ビュー パラメータが設定された後、バッキング Bean メソッドを呼び出すために使用できます。

例えば

<f:metadata>
    <f:viewParam name="carId" value="#{bean.car}" converter="#{carConverter}" />
    <f:event type="preRenderView" listener="#{bean.init}" />
</f:metadata>

private Car car;
private transient DataModel<Something> model;

public void init() {
    model = buildSomehowBasedOn(car);
}

あるいは、データテーブルのゲッターに遅延読み込みを導入することもできます。

public DataModel<Something> getModel() {
    if (model == null) {
        model = buildSomehowBasedOn(car);
    }

    return model;
}
于 2012-04-06T03:02:30.237 に答える