在 PrimeFaces 菜单组件中混合静态和动态菜单条目
Mixing static and dynamic menu entries in PrimeFaces menu components
我想在标记中将菜单的一部分保持静态,并在 Java 中动态生成另一部分。
<p:menubar>
<p:menuitem value="static stuff"/>
<p:submenu label="dynamic stuff" model="#{bean.dynamicMenu}"/>
<!-- more static stuff -->
</p:menubar>
这仅显示静态项目并且从不调用我的 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!
我想在标记中将菜单的一部分保持静态,并在 Java 中动态生成另一部分。
<p:menubar>
<p:menuitem value="static stuff"/>
<p:submenu label="dynamic stuff" model="#{bean.dynamicMenu}"/>
<!-- more static stuff -->
</p:menubar>
这仅显示静态项目并且从不调用我的 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!