我正在编写一个下拉菜单,点击一个按钮菜单,它会显示它的子菜单或菜单项。目前,我无法从bean填充p:menuitem。以前,我试图编码为
<p:menu label="PrimeFaces" icon="ui-icon-heart">
<p:menuitem value="Home" url="http://www.primefaces.org" icon="ui-icon-home" />
<p:menuitem value="Docs" url="http://www.primefaces.org/documentation" icon="ui-icon-document" />
<p:menuitem value="Download" url="http://www.primefaces.org/downloads" icon="ui-icon-arrowthick-1-s" />
<p:menuitem value="Support" url="http://www.primefaces.org/support" icon="ui-icon-wrench" />
</p:menu>
正如您所注意到的,菜单项值(Home,Docs等)在JSF中是硬编码的。如何从bean中获取值并填充为菜单项?当我可以将列表设置为值时,p:menuitem是否有类似f:selectItems的东西?
我想要尝试实现的是从bean中填充菜单项,并在选择单个菜单项时触发方法。
非常感谢帮助。谢谢。
答案 0 :(得分:0)
如果您使用Primefaces,您可以尝试:
豆:
public class MyItem {
private String value;
private String url;
private String icon;
....
getters/setters
...
}
public List<MyItem> getMenuItems() {
// build list
}
XHTML:
<p:repeat value="#{bean.menuItems}" var="item">
<p:menuitem value="#{item.value}" url="#{item.url}" icon="#{item.icon}" />
</prepeat>
答案 1 :(得分:0)
您确定菜单是jsf组件吗?我认为您可能正在使用primefaces组件,名称方案通常定义如下,而p:menu是primefaces的组件:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:sec="http://www.springframework.org/security/tags" >
您可以自定义并使用Bean中的菜单,如下所示:
xhtml:
<p:menu model="#{menuBean.model}" />
Bean:
public class MenuBean {
private MenuModel model;
public MenuBean() {
model = new DefaultMenuModel();
//First submenuDefaultSubMenu 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 submenuDefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions");
item = new DefaultMenuItem("Save");
item.setIcon("ui-icon-disk");
item.setCommand("#{menuBean.save}");
item.setUpdate("messages");
secondSubmenu.addElement(item);
item = new DefaultMenuItem("Delete");
item.setIcon("ui-icon-close");
item.setCommand("#{menuBean.delete}");
item.setAjax(false);
secondSubmenu.addElement(item);
item = new DefaultMenuItem("Redirect");
item.setIcon("ui-icon-search");
item.setCommand("#{menuBean.redirect}");
secondSubmenu.addElement(item);
model.addElement(secondSubmenu);
}
public MenuModel getModel() { return model; }
}
在这里您可以看到所有文档: https://www.primefaces.org/docs/guide/primefaces_user_guide_6_2.pdf(第333页)