2011-07-07 13 views
1

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

実際、ページの読み込み中に自動的にBeanメソッドを呼び出す必要がありますか?

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

答えて

2

@PostConstructの点は(そうで例えば@EJB@Resource@Injectと)(<managed-property>又は@ManagedPropertyのように)結局管理プロパティが設定されているいくつかのコードを実行するためのフックと、すべての依存性の注入を提供することであるが撮影しました場所。

これらのいずれも持っていない場合は、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>でインジェクトすることができます。

+0

ありがとう、私は、ページが読み込まれるたびにメソッドを実行するつもりでした – Moro

関連する問題