0
<p:tabView scrollable="true" var="tabItem" value="#{rootItem.lstItems}">
 <p:tab title="#{tabItem.txtMenuName}">
    <p:menubar>
        <c:forEach items="#{tabItem.lstItems}" var="menuItem">
            <p:menuitem value="#{menuItem.txtMenuName}" />
        </c:forEach>
    </p:menubar>
       <--<p:menubar>
         <ui:repeat items="#{tabItem.lstItems}" var="menuItem">
            <p:menuitem value="#{menuItem.txtMenuName}" />
         </ui:repeat>
       </p:menubar>
     -->
</p:tab>

It works fine in primefaces 4.0 (netbeans IDE)

But not working in eclipse primefaces 5.0 (eclipse IDE) However, ui:repeat not working in both cases.

Exception thrown is:

 javax.servlet.ServletException:com.sun.faces.facelets.compiler.UIInstructions cannot be cast to  org.primefaces.model.menu.MenuElement
Tiny
  • 27,221
  • 105
  • 339
  • 599
Noor Nawaz
  • 2,175
  • 27
  • 36

1 Answers1

1

UI repeat does not work in both cases since menuBar renders it's children itself, not via renderes for menuItem and so it does not 'delegate' to ui:repeat either. If you want dynamic menu's, create a model and use the model attribute to relate the two. Something like done in the PrimeFaces showcase:

xhtml:

<p:menu model="#{menuView.model}" />

java:

//First submenu
DefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic Submenu");

DefaultMenuItem item = new DefaultMenuItem("External");
item.setUrl("http://www.primefaces.org");
item.setIcon("ui-icon-home");
firstSubmenu.addElement(item);

model.addElement(firstSubmenu);

//Second submenu
DefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions");
...

Regarding the error, check this. Removing the comment might help

Community
  • 1
  • 1
Kukeltje
  • 12,223
  • 4
  • 24
  • 47