JSF + HashMap и его ключ

У меня есть база данных с 2 таблицами CD и Song. Бобовый доступ сессии затем классы объекта тех двух таблиц. В моем бобе поддержки у меня просто есть a String cd и HashMap<CDName, CDName> cds это сдержит список возврата CD из моего sessionbean, таким образом, в JSF я сделал бы что-то вроде этого.

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

Это успешно загружает список CD на выпадающий список, и если я выбираю CD, cd переменные содержали бы название CD, который я выбираю. Это работает отлично если CDName уникально. Но к сожалению это не. Таким образом, то, что я хочу, HashMap<ID, CDName> cds где ID PK в таблице CD. Но теперь как я могу настроить его, поэтому когда я нажимаю на объект из выпадающего списка CD, я добираюсь ID назад в моем backingbean, так, чтобы я мог сделать что-то вроде этого в моем бобе сессии

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

по существу я хочу получить cd возразите, что я просто нажимаю, имею в виду его, могло бы быть дублирование. Если мой дизайн плох, укажите. Справка.Заранее спасибо

1
задан Thang Pham 25 June 2010 в 18:33
поделиться

1 ответ

Он будет установлен в свойстве за # {backingBean.cd} , как показано в вашем примере кода.

Итак, в основном:

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

В качестве альтернативы вы также можете иметь HashMap и использовать вместо него 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());
}

См. также:


При этом HashMap по своей природе неупорядочен . Вы уверены, что вам не нужна TreeMap (автоматическая сортировка по ключу) или LinkedHashMap (порядок вставки)?

2
ответ дан 2 September 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: