2012-02-29 89 views
0

我想給SelectItems的列表到selectOneMenu和我得到這個異常:JSF的SelectItem例外

[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")}; 
+1

如果你使用''而不是?在我看來'user.names'包含一個名稱列表。 – Lion 2012-02-29 03:37:20

+1

異常消息並不奇怪。 '[L'部分意味着它是一個對象數組。您不能將'SelectItem []'強制轉換爲'SelectItem'。 – BalusC 2012-02-29 10:49:09

+0

謝謝你。我是JSF的新手,所以我沒有認識到這一點。 – Giannis 2012-03-01 11:36:58

回答

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。