1

我希望将列表中的项目设置为 icefaces 中的 selectonemenu。但是当我这样做时,我得到以下错误: java.lang.ClassCastException: cannot be cast to javax.faces.model.SelectItem

是一个实体类。

请帮忙。

4

1 回答 1

5

创建和填充selectOneMenu项目的正常方式如下:

private String selectedItem; // +getter +setter
private List<SelectItem> selectItems; // +getter

public Bean() {
    selectItems = new ArrayList<SelectItem>();
    for (Entity entity : getYourEntities()) {
        selectItems.add(new SelectItem(entity.getValue(), entity.getLabel()));
    }
}

在视图中使用以下内容(您可以轻松地<h:用 替换<ice:):

<h:selectOneMenu value="#{bean.selectedItem}">
    <f:selectItems value="#{bean.selectItems}" />
</h:selectOneMenu>

除了String值之外,您还可以使用任何Number( IntegerLong等),因为 JSF 为此具有内置转换器。但是如果你想使用整个对象作为项目值,那么你需要创建一个Converter. 这在本文中有详细描述。

于 2010-10-16T17:51:55.610 回答