在PrimeFaces菜单组件中混合静态和动态菜单项

在PrimeFaces菜单组件中混合静态和动态菜单项,primefaces,jsf-2.2,Primefaces,Jsf 2.2,我希望菜单的一部分在标记中保持静态,另一部分在Java中动态生成 <p:menubar> <p:menuitem value="static stuff"/> <p:submenu label="dynamic stuff" model="#{bean.dynamicMenu}"/> <!-- more static stuff --> </p:menubar> 这只显示静态项,从不调用mygetDynam

我希望菜单的一部分在标记中保持静态,另一部分在Java中动态生成

<p:menubar>
    <p:menuitem value="static stuff"/>
    <p:submenu label="dynamic stuff" model="#{bean.dynamicMenu}"/>
    <!-- more static stuff -->
</p:menubar>

这只显示静态项,从不调用my
getDynamicMenu
方法,因为
p:submenu
没有
model
属性

我尝试在菜单结构中使用
ui:include
将标记移动到一个额外的文件中,并将其包含在不同的上下文中,但Primefaces抱怨它不喜欢将其作为
p:menubar
和/或
p:submenu
的子元素


如何在xhtml中保持菜单部分的静态,在Java中保持菜单部分的动态?

虽然我不能使用
ui:include
,但我可以使用
c:forEach
,正如@Kukeltje在评论中指出的那样:

<p:submenu label="Dynamic 0" rendered="#{list.size() eq 0">
    <p:menuitem value="Nothing here..." url="...">
</p:submenu>

<p:submenu label="Dynamic 1" rendered="#{list.size() eq 1}">
    <c:set var="node" value="#{list[0]}"/>
    <!-- more menu structure here -->
</p:submenu>

<p:submenu label="Dynamic N" rendered="#{list.size() gt 1}">
    <c:forEach items="#{list}" var="item">
        <p:submenu label="#{item}">
            <!-- more menu structure here -->
        </p:submenu>
    </c:forEach>
</p:submenu>

这允许我根据我的支持bean呈现不同的菜单


再次感谢,@Kukeltje

如何动态?A
c:forEach
works请创建一个答案我手头没有任何具体的示例,因此我需要创建一个或从头开始编写一个。我想你有一个,你可以(并且被鼓励)回答你自己的问题。啦啦队信用在很多情况下并不那么重要。有时(相对而言)写一个答案只需要花费相当多的时间。我宁愿花时间做其他事情。能够帮助你解决你的问题对我来说已经足够了。只要在答案中“提到”我;-)