2017-11-01 11 views
0

私は、メニューの一部をマークアップで静的にし、Javaで動的に生成する別の部分を残したいと思います。Primefaces:静的および動的メニューエントリを混在させる

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

これは、静的な項目を示し、model属性をとらない私のgetDynamicMenu方法原因p:submenuを呼び出すことはありません。

私は、余分なファイルにマークアップを移動するには、メニュー構造内ui:includeを使用してみましたし、異なるコンテキストであることが挙げられるが、Primefacesは、それがp:menubarおよび/またはp:submenuの子要素としてそれを好きではないことを訴えました。

どのように私のメニューの一部をJavaのxhtmlと動的な部分に静的に保つことができますか?私はui:includeを使用することはできませんが@Kukeltjeが彼のコメントで指摘したように

+1

どのように動的ですか? 'c:forEach'works – Kukeltje

+0

回答を作成してください – Kukeltje

+0

具体的な例はありませんので、私は自分の頭の上から1つを作成するか、書き込む必要があります。あなたはあなたが自分の質問に答えることができます(そして励まされます)。歓声 – Kukeltje

答えて

0

、私は、c:forEachを使用することができます。これは私が私のバッキングBeanに応じて、異なるメニューを提示することができます

<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> 

もう一度、@Kukeltje!

関連する問題