【问题标题】:JSF SelectItem exceptionJSF SelectItem 异常
【发布时间】:2012-02-29 03:20:56
【问题描述】:

我正在尝试将 SelectItems 列表提供给 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")};

【问题讨论】:

  • 如果您改用&lt;f:selectItems/&gt; 会怎样?在我看来,user.names 包含一个名称列表。
  • 异常信息并不奇怪。 [L 部分表示它是一个对象数组。您不能将 SelectItem[] 转换为 SelectItem
  • 谢谢。我是 JSF 的新手,所以我没有意识到这一点。

标签: exception jsf


【解决方案1】:

&lt;f:selectItem&gt; 表示单个 SelectItem,但您的 EL 表达式为其提供了一个 SelectItems 数组。你是说&lt;f:selectItems&gt;吗?

此外,由于 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。

【讨论】:

    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多