JSF / Spring如何使用h:selectOneMenu而不使用SelectItem对象

时间:2010-10-14 15:57:58

标签: java jsf

我的支持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>

2 个答案:

答案 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