我在菜单上使用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,名称。 请指教,谢谢。
答案 0 :(得分:24)
<ui:repeat>
是一个UI组件,而<f:selectItem>
是一个标签处理程序(如JSTL)。 Taghandlers在视图构建时运行之前在视图渲染时运行的UI组件之前运行。所以在<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冲突。
答案 1 :(得分:3)
为什么不使用f:selectItems。我觉得这样的事情会起作用。
<f:selectItems value="#{user.getUsersList()}" var="user" itemLabel="#{user.name}"
itemValue="#{user.id}" />
修改强> 还尝试从代码中的user.getUsersList()中删除括号,我认为它不是你如何在jsf2中调用函数