在冰中设置列表项:SelectOneMenu

时间:2010-10-16 17:39:19

标签: jsf icefaces selectonemenu

我希望将列表中的项目设置为icefaces中的selectonemenu。 但是当我这样做时,我得到以下错误: java.lang.ClassCastException:无法强制转换为javax.faces.model.SelectItem

是一个实体类。

请帮助。

1 个答案:

答案 0 :(得分:4)

创建和填充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值之外,您还可以使用任何NumberIntegerLong等),因为JSF为此构建了内置转换器。但是如果要将整个对象用作项目值,则需要创建Converter。这在this article中有详细描述。