【问题标题】:Mixing static and dynamic menu entries in PrimeFaces menu components在 PrimeFaces 菜单组件中混合静态和动态菜单项
【发布时间】:2018-04-14 08:45:15
【问题描述】:

我想在标记中保持菜单的一部分是静态的,而让另一部分在 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 中保持动态?

【问题讨论】:

  • 动态如何? c:forEachworks
  • 请创建一个答案
  • 我手头没有任何具体的例子,所以我需要创建一个或从头顶写一个。我假设你有一个,你可以(并且被鼓励)回答你自己的问题。干杯
  • 信用在很多情况下并不那么重要。有时它(相对)需要很多时间来写一个答案。我宁愿把时间花在做其他事情上。能帮你解决问题对我来说就足够了。
  • 只是在答案中“提及”我 ;-)

标签: primefaces jsf-2.2


【解决方案1】:

虽然我不能使用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!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-10
    相关资源
    最近更新 更多