我正在尝试将一个SelectItem列表提供给selectOneMenu
,我得到了这个例外:
[Ljavax.faces.model.SelectItem; cannot be cast to javax.faces.model.SelectItem
对我来说这看起来很奇怪。这是页面中的代码:
<h:selectOneMenu value="#{user.name}">
<f:selectItem value="#{user.names}" />
</h:selectOneMenu>
在用户类中:
import javax.faces.model.SelectItem;
private final SelectItem[] users = {new SelectItem("Jack"),new SelectItem("Max")};
答案 0 :(得分:1)
<f:selectItem>
表示单个SelectItem
,但您的EL表达式会为其提供一个SelectItems
数组。您的意思是<f:selectItems>
吗?
此外,由于JSF 2.x f:selectItems
能够使用普通的Java Bean,因为official docs显示:
<h:selectOneListbox size="1" id="escape02" value="#{select05NoSelection.initialCollectionValues}">
<f:selectItems value="#{select05NoSelection.hobbitList}"
var="n"
itemValue="#{n}"
itemLabel="#{n.bio}"
itemDescription="#{n.description}"
itemDisabled="#{n.disabled}"
itemLabelEscaped="true"
noSelectionValue="#{select05NoSelection.hobbitList[0]}"/>
</h:selectOneListbox>
因此不再需要在辅助bean中创建SelectItems。