我正在使用菜单上的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>
UserBean:
@Component("user")
@Scope("view")
Public class UserBean{
Public List<User> getUserList() throws Exception {
return userService.getAllUsers();
}
}
注意: UserBean不包含属性id和它们在用户实体中存在的名称。
请指教,谢谢。
最佳答案
<ui:repeat>
是一个UI组件,而 <f:selectItem>
是一个标记处理程序(如JSTL)。标记处理程序在 View 构建期间运行,而UI组件则在 View 呈现期间运行。因此,在<ui:repeat>
运行时,还没有<f:selectItem>
的方法。
也是标签处理程序的<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发生冲突。也可以看看:
selectOneMenu
wiki page 关于jsf-2 - ui :repeat doesn't work with f:selectItem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8152322/