7

我在菜单上使用 icefaces select 从用户列表中选择一个用户,我想为每个用户重复 selectItem 这是我尝试过的:

<ice:selectOneMenu id="users">
    <ui:repeat value="#{user.getUserList()}" var="user">
        <f:selectItem itemLabel="#{user.name}" itemValue="#{user.id}"/>
    </ui:repeat>               
</ice:selectOneMenu> 

用户豆:

@Component("user")
@Scope("view")
Public class UserBean{

Public List<User> getUserList() throws Exception {
        return userService.getAllUsers();
    }

}

注意: UserBean 不包含属性 id,它们存在于 User 实体中的名称。请指教,谢谢。

4

2 回答 2

27

<ui:repeat>是一个 UI 组件,而<f:selectItem>它是一个标记处理程序(如 JSTL)。Taghandlers 在视图构建期间运行,在视图渲染期间运行的 UI 组件之前运行。所以在<ui:repeat>运行的那一刻,没有办法 a <f:selectItem>

A <c:forEach>,它也是一个标签处理程序,可以工作,但更好的是使用它<f:selectItems>。从 JSF 2.0 开始,它也可以采用集合并支持var属性:

<ice:selectOneMenu id="users">
    <f:selectItems value="#{user.usersList}" var="userItem" 
        itemLabel="#{userItem.name}" itemValue="#{userItem.id}" />
</ice:selectOneMenu>

请注意,该var属性不应与范围内的现有 bean 冲突。

也可以看看:

于 2011-11-16T13:29:36.117 回答
4

为什么不使用 f:selectItems。我认为这样的事情会奏效。

<f:selectItems value="#{user.getUsersList()}" var="user" itemLabel="#{user.name}"
                                            itemValue="#{user.id}" />

编辑 还尝试从代码中的 user.getUsersList() 中删除括号,我认为这不是您在 jsf2 中调用函数的方式

于 2011-11-16T13:27:22.353 回答