使用列表时JSF selectOneMenu标记错误

时间:2012-03-07 23:47:07

标签: jsf selectonemenu

我正在使用JSF标记h:selectOneMenu作为下拉列表。

<h:selectOneMenu id="subscriberName" value="#{manageSubscriberInformation.subscriberName}" 
    <f:selectItem itemValue="" itemLabel="" />                            
    <f:selectItems value="#{manageSubscriberInformation.subList}" />
</h:selectOneMenu> 

subList对象是我在bean类中使用getter和setter定义的列表。 在我的servlet的init方法中,我使用一些值填充列表。 但是当我加载页面时,我收到以下错误:

java.lang.IllegalArgumentException: Collection referenced by UISelectItems with binding '#{manageSubscriberInformation.subList}' and Component-Path : {Component-Path : [Class: javax.faces.component.UIViewRoot,ViewId: /jsp/manageSubscriber.jsp][Class: javax.faces.component.UINamingContainer,Id: body][Class: javax.faces.component.html.HtmlForm,Id: c][Class: javax.faces.component.html.HtmlSelectOneMenu,Id: subscriberName][Class: javax.faces.component.UISelectItems,Id: _idJsp143]} does not contain Objects of type SelectItem

无法理解造成问题的原因。

1 个答案:

答案 0 :(得分:2)

例外是相当自我解释。

  

java.lang.IllegalArgumentException:UISelectItems(...)引用的集合不包含SelectItem类型的对象

#{manageSubscriberInformation.subList}必须返回List<SelectItem>SelectItem[],其中SelectItemthe javax.faces.model.SelectItem class

仅在JSF 2.0之后,不再需要具体SelectItem

另见: