我正在使用模板在我的所有页面上显示下拉菜单。我只想呈现允许特定用户访问的菜单项。
<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 的;相反,它是包含 menuGroup 的容器。由于它是封闭容器,因此该组件具有其子项的列表,并且 id 为“item”的组件位于该列表中。我的问题是我无法确定正在调用“允许”方法的哪个子项,即此项目、“项目”或列表中的其他子项之一。是否有某种方法可以询问父容器正在调用哪个子容器“allowed()”?