2

アプリケーション全体のさまざまなドメインオブジェクトから参照される連絡先のリストを保持するBeanを持つアプリケーションがあります。

@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複数のドメインオブジェクトから参照できます。特定のJavaコレクションエントリをJSF2のManagedPropertyとして参照/挿入する方法はありますか?または、このシナリオを処理するためのより良いアプローチはありますか?

ありがとう!

4

1 に答える 1

2

理論的には、リスト インデックスを記憶して渡す方法はわかりますが、これはかなり扱いにくいものになります。

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

例えば

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

ClaimマネージドBeanで:

public void doAction(Contact contact) {
    // ...
}
于 2011-09-19T16:49:10.623 に答える