2011-03-24 7 views
2

JSFがマネージドBeanを作成する順番については保証はありますか?JavaServer Faces Beanインスタンス化の注文

私のケースはかなり次のとおりです: 私は同じページで使用する2つの豆を持っています。 2番目のものを作成するときに、最初のものからいくつかの情報を取得します。その@PostConstructメソッドで(データベースにヒットするのを避けるため)。

最初のBeanが2番目の前に実際に作成されていることを確認できる方法はありますか?

答えて

4

これを確実にするには、1つのBeanを他のBeanのマネージプロパティとして挿入します。

@ManagedPropertyを使用し、あなたはJSF 2.0にすでにしていると仮定すると:

@ManagedBean 
@RequestScoped 
public class FirstBean { 
    // ... 
} 

@ManagedBean 
@RequestScoped 
public class SecondBean { 

    @ManagedProperty(value="#{firstBean}") 
    private FirstBean firstBean; // +setter 

    @PostConstruct 
    public void init() { 
     // firstBean is available here. 
    } 

    // ... 
} 

それとも、JSF 1.2に残っている、faces-config.xml<managed-property>を使用します。

<managed-bean> 
    <managed-bean-name>firstBean</managed-bean-name> 
    <managed-bean-class>com.example.FirstBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
</managed-bean> 

<managed-bean> 
    <managed-bean-name>secondBean</managed-bean-name> 
    <managed-bean-class>com.example.SecondBean</managed-bean-class> 
    <managed-bean-scope>request</managed-bean-scope> 
    <managed-property> 
     <property-name>firstBean</property-name> 
     <value>#{firstBean}</value> 
    </managed-property> 
</managed-bean> 
+0

ありがとうございます。 (私は時間のある時点でそれを知っていたと確信しています:)) これ以外は、豆はランダムな順序で構成されていますか? –

+1

いいえ、それらはUIコンポーネントツリーのEL式の順に構成されていますが、目的のスコープに何も存在しない場合にのみ構築されます。 – BalusC

+0

OKです。どうもありがとう。 –

関連する問題