<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>
它在primefaces 4.0(netbeans IDE)
中工作正常但是没有在eclipse primefaces 5.0(eclipse IDE)中工作 但是,ui:在这两种情况下重复都不起作用。
抛出的异常是:
javax.servlet.ServletException:com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement
答案 0 :(得分:1)
UI重复在两种情况下都不起作用,因为menuBar呈现它的子项本身,而不是通过menuItem的renderes,因此它不会“委托”给ui:repeat。如果需要动态菜单,请创建模型并使用model属性将两者相关联。在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");
...
关于错误,请检查this。删除评论可能会有所帮助