1

@postConstructJSF 1.2 以降と同様に、JSF 1.1 での動作をシミュレートするにはどうすればよいですか?

実際、ページの読み込み中に Bean メソッドを自動的に呼び出したいですか?

JSF 1.1 で IceFaces 1.8 を使用しています。

4

1 に答える 1

2

のポイントは、すべての管理プロパティ (または など) が設定され、すべての依存関係の挿入 ( 、など) が行われた後に@PostConstructコードを実行するためのフックを提供することです。<managed-property>@ManagedProperty@EJB@Resource@Inject

それらのいずれも持っていない場合は、Bean のコンストラクターを使用してください。

public class Bean {

    public Bean() {
        // Just do your job here. Don't do it the hard way.
    }

    // ...
}

または、特定のプロパティが設定されているときに実際に実行したい場合は、現在のプロパティ値を null チェックしながらセッターでジョブを実行します。

public class Bean {

    private SomeObject someManagedProperty;

    public void setSomeManagedProperty(someManagedProperty) {
        if (this.someManagedProperty == null && someManagedProperty != null) {
            // First-time set, now you can do your job here.
        }

        this.someManagedProperty = someManagedProperty;
    }

    // ...
}

コメントに従って更新します。

ページが読み込まれるたびにメソッドを実行するつもりでした

@PostConstructそうしません。ただし、Bean がリクエスト スコープの場合は、同じ効果が見られます。セッションまたはアプリケーション スコープのマネージド Bean を使用して、リクエスト スコープのデータを管理しているようです。これは本質的に間違っています。これをリクエスト スコープの Bean に変換する必要があります。実際のセッション スコープのデータはすべて、セッション スコープの Bean に分割できます<managed-property>

于 2011-07-07T18:16:22.827 に答える