1

2 つのテーブルCDSong. セッション Bean アクセス、次にこれら 2 つのテーブルのエンティティ クラス。私のバッキング Bean には、sessionbean から返された CD のリストを保持するString cdandHashMap<CDName, CDName> cdsがあるだけなので、JSF では次のようにします。

<h:selectOneMenu id="cd" value="#{backingBean.cd}">
     <f:selectItem itemLabel="Select CD" itemValue="" />
     <f:selectItems value="#{backingBean.cds}" />
</h:selectOneMenu>

これにより、CD のリストがドロップダウン リストに正常にロードされ、cdCD を選択すると、選択した CD の名前が変数に保持されます。これCDNameは、ユニークな場合に最適です。しかし、残念ながらそうではありません。だから私が欲しいのは、 PK が table のHashMap<ID, CDName> cdsどこにあるかです。しかし、どのように設定すればよいでしょうか。CD ドロップダウン リストからアイテムをクリックすると、backingbean に戻ります。これにより、セッション Bean でこのようなことができます。IDCDID

CD cd = EntityManager.find(CD.class, the id that I get back from JSF page)

cd基本的に、クリックしたオブジェクトを取得したいのですが、重複がある可能性があることに注意してください。私のデザインが悪い場合は、ご指摘ください。助けてください。前もって感謝します

4

1 に答える 1

2

#{backingBean.cd}コード例に示されているように、背後のプロパティに設定されます。

だから基本的に:

CD cd = em.find(CD.class, this.cd);

HashMap<CD, CDName>または、代わりに a を使用して、javax.faces.convert.Converter基本的に次のことを行うこともできます。

public Object getAsObject(FacesContext context, UIComponent component, String value) {
    return em.find(CD.class, value);
}

public String getAsString(FacesContext context, UIComponent component, Object value) {
    return String.valueOf(((CD) value).getId());
}

以下も参照してください。


つまり、 aHashMapは本来unorderedです。TreeMap(キーによる自動ソート) またはLinkedHashMap(挿入順序)は必要ないのですか?

于 2010-06-25T18:41:08.243 に答える