我正在使用模板在我的所有页面上显示下拉菜单。我想只渲染特定用户可以访问的菜单项。
<rich:menuGroup label="Items" id="item" rendered="#{user.allowed">
<rich:menuItem label="Find" action="searchItems"/>
<rich:menuItem label="Create" action="newItem"/>
</rich:menuGroup>
<rich:menuGroup label="Groups" id="group" rendered="#{user.allowed">
<rich:menuItem label="Find" action="searchGroup"/>
<rich:menuItem label="Create" action="newGroup"/>
</rich:menuGroup>
allowed()旨在成为一种通用方法。它叫
String id = UIComponent.getCurrentComponent(FacesContext.getCurrentInstance()).getId();
获取组件的id,以便它可以决定是否呈现项目。
不幸的是,返回的id不是menuGroup的id;相反,它是容纳menuGroup的容器。由于它是封闭容器,因此该组件具有其子项列表,并且该项列表中包含id为“item”的组件。我的问题是,我无法弄清楚要求“允许”方法的子项,即此项目,“项目”或列表中的其他子项之一。有没有办法询问父容器正在调用哪个子句“allowed()”?
答案 0 :(得分:2)
为什么不直接将id传递给bean?
<rich:menuGroup label="Groups" id="group" rendered="#{user.isAllowed('group')}">