我的支持bean中有一个模型对象集合,我想使用f:selectItems标记在h:selectOneMenu
中显示它们。我已经阅读了许多建议使用SelectItem对象集合而不是我的模型POJO的教程。但是,我不想这样做,因为它将您的模型与面部表示联系起来。有没有办法实现这个目标?我不断收到Servlet异常 - "incompatible with javax.faces.model.SelectItem."
我在下面发布了一些示例代码段:
爪哇:
@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>
答案 0 :(得分:1)
您必须仅使用SelectItem。
使用转换器,here是一篇文章
答案 1 :(得分:1)
您需要SelectItem
,因为这是JSF知道要显示什么以及作为值传递的内容的方式。
如果您能指定类似的内容,也许会很好:
<f:selectItems collection="#{bean.colelction}" itemKey="id" itemLabel="name" />
- 但你不能在JSF 1.2中。但是,在JSF 2.0中It is available。