c:foreach ui:repeat 在 <p:menubar> primefaces 中不工作
c:foreach ui:repeat not working in <p:menubar> primefaces
<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:repeat 在这两种情况下都不起作用。
抛出的异常是:
javax.servlet.ServletException:com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement
UI repeat 在这两种情况下都不起作用,因为 menuBar 呈现它的子项本身,而不是通过 menuItem 的 renderes,因此它也不会 'delegate' 到 ui:repeat。如果您想要动态菜单,请创建一个模型并使用模型属性将两者关联起来。类似于 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。删除评论可能会有所帮助
<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:repeat 在这两种情况下都不起作用。
抛出的异常是:
javax.servlet.ServletException:com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement
UI repeat 在这两种情况下都不起作用,因为 menuBar 呈现它的子项本身,而不是通过 menuItem 的 renderes,因此它也不会 'delegate' 到 ui:repeat。如果您想要动态菜单,请创建一个模型并使用模型属性将两者关联起来。类似于 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。删除评论可能会有所帮助