2010-10-14 2 views
1

У меня есть коллекция объектов модели в моем бэкбоне, и я хочу использовать тег f: selectItems для отображения их в h:selectOneMenu. Я прочитал много руководств, которые рекомендуют использовать коллекцию объектов SelectItem вместо моих POJO-моделей. Однако я не хочу этого делать, потому что он связывает вашу модель с презентацией лиц. Есть ли способ достичь этого? Я постоянно получаю Servlet Exception - "incompatible with javax.faces.model.SelectItem." я отправил несколько образцов фрагменты ниже:JSF/Spring Как использовать h: selectOneMenu без объектов SelectItem

Java:

@Component(value = "headerBean") 
@Scope(value = "session") 
class HeaderBean{ 

private Collection<ValueObject> myCollectionOfValueObjects = new ArrayList<ValueObject>(); 
// ... 
// getter, setters, whatnot... 
// ... 
} 

JSP:

<h:selectOneMenu id="selectMenu" value="#{headerBean.myValueObject}"> 
    <f:selectItems value="#{headerBean.myCollectionOfValueObjects}"/> 
</h:selectOneMenu> 

ответ

1

Вы должны использовать только SelectItem.

Используйте конвертер для того же, here статья

1

Вам нужен SelectItem, потому что это путь JSF знает, что показывать, а что передать в качестве значения.

Возможно, было бы неплохо, если бы вы могли бы указать, что-то вроде:

<f:selectItems collection="#{bean.colelction}" itemKey="id" itemLabel="name" /> - но вы не можете в JSF 1.2. It is available в JSF 2.0, однако.

Смежные вопросы