2011-09-19 3 views
2

I持ってアプリケーション全体のさまざまなドメインオブジェクトから参照されている連絡先のリストを保持するBeanを持つアプリケーション:JSF 2 ManagedPropertyからJava Collectionエントリーを参照するには?

@ManagedBean 
@SessionScoped 
public class ContactHolder implements Serializable { 
    private ArrayList<Contact> contactsList; 
    //getters and setters... 
} 

コンタクトが作成され、この内のさまざまなJSFページやエントリからcontactsListに追加することができますリストは、アプリケーション全体のさまざまなドメインオブジェクトのManagedPropertyとして参照する必要があります。ユーザーが既存の連絡先や、各ドメインオブジェクトの新規作成を選択する選択肢を持つことになりますので

@ManagedBean 
public class Claim implements Serializable { 
    private Contact insured; //needs to reference entry in contactsList 
} 

@ManagedBean 
public class Vehicle implements Serializable { 
    private Contact driver; //needs to reference entry in contactsList 
} 

contactsListで同じ連絡先のエントリがから参照することができます。例えば、私のドメインオブジェクトのいくつかを見て複数のドメインオブジェクト。 JSF 2で特定のJava CollectionエントリをManagedPropertyとして参照/注入する方法はありますか?または、このシナリオを処理するためのより良いアプローチがありますか?

ありがとうございます!

答えて

2

理論的には、リストインデックスを覚えて渡す方法がありますが、これはかなり不器用になります。

Servlet 3.0/EL 2.2対応コンテナ(Tomcat 7、Glassfish 3など)をターゲットにしている場合は、追加の引数を指定してメソッドを呼び出すことができます。また、EL 2.1と同じ拡張機能を追加するJBoss ELをインストールできます。そのオブジェクトをアクションメソッドの引数として渡すことができるはずです。

など。 ClaimマネージドBean内で

<h:dataTable value="#{contactHolder.contacts}" var="contact"> 
    <h:column> 
     <h:commandButton value="Claim" action="#{claim.doAction(contact)}" /> 
    </h:column> 
</h:dataTable> 

:迅速な応答のための

public void doAction(Contact contact) { 
    // ... 
} 
+0

ありがとう! – holic87

関連する問題