1

我正在使用模板在我的所有页面上显示下拉菜单。我只想呈现允许特定用户访问的菜单项。

<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()”?

4

1 回答 1

2

为什么不直接将 id 传递给 bean?

<rich:menuGroup label="Groups" id="group" rendered="#{user.isAllowed('group')}">
于 2013-07-20T08:48:15.797 回答