ui:repeat不适用于f:selectItem

Mah*_*leh 5 icefaces facelets jsf-2 icefaces-1.8

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

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

的UserBean:

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

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

}
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 24

<ui:repeat>是一个UI组件,<f:selectItem>而是一个标签处理程序(如JSTL).Taghandlers在视图构建时运行之前在视图渲染时运行的UI组件之前运行.所以在目前的<ui:repeat>运行中,没有任何方法<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>
Run Code Online (Sandbox Code Playgroud)

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

也可以看看: