我尝试使用PrimeFaces 4.0使用panelmenu
和defaultmenumodel
实现编程panelmenu
。问题是当我实现一个简单的模型时,一个或多个子菜单包含一个或多个菜单项运行正常。但是当我实现包含菜单项的子菜单和包含其他菜单项的更多子菜单时,defaultmenumodel
不会显示所有级别。
Menu level one
...MenuItem one.one *
...MenuItem one.two *
...SubMenu one.one
......MenuItem one.one.one
......MenuItem one.one.two
...SubMenu one.two
......MenuItem one.two.one
Menu lebel two
... And so on
呈现页面时未显示*的MenuItem 如何使用DefaultMenuModel实现这些菜单模型? 我想使用pojo来保存DataBase中的菜单结构以进行管理。 感谢
(已添加/已编辑) 我已经运行了下一个代码建议,但没有使用p:panelMenu。使用p:menuBAr可以很好地显示一个Item和一个带有项目的SubMenu。
//create the first menu item It is not SubMenu, It's a simple MenuItem
//This item not shows in <p:panelmenu>
DefaultMenuItem accueil = new DefaultMenuItem();
accueil.setStyleClass("only simple menuItem");
accueil.setUrl("/accueil.jsf");
this.menumodel.addElement(accueil);
//This work properly ans shows in <p:panelMenu>
DefaultSubMenu submenu = new DefaultSubMenu();
submenu.setIcon(null);
submenu.setLabel("submenu 01");
this.menumodel.addElement(submenu);
//Add items to submenu
DefaultMenuItem item = new DefaultMenuItem();
item.setValue("Administrar Usuarios");
item.setUrl("/clientapp/modules/admin/manage_users.xhtml");
submenu.addElement(item);
答案 0 :(得分:3)
我创建了这样的菜单:
豆:
private MenuModel menumodel = new DefaultMenuModel();
//create the first menu item
DefaultMenuItem accueil = new DefaultMenuItem("Accueil");
accueil.setStyleClass("accueil");
accueil.setUrl("/accueil.jsf");
this.menumodel.addElement(accueil);
//Start here i create submenu with personal access for all user
for (Autorisation auto : this.permList) {
if (auto.getRessource().getSousMenu() != null) {
if (auto.getRessource().getSousMenu().size() != 0) {
//Create submenu
DefaultSubMenu submenu = new DefaultSubMenu();
submenu.setIcon(null);
submenu.setLabel(auto.getRessource().getMenu());
this.menumodel.addElement(submenu);
for (Ressource r : auto.getRessource().getSousMenu()) {
//Feed submenu with menu item
DefaultMenuItem item = new DefaultMenuItem();
item.setValue(r.getMenu());
item.setUrl(r.getPath());
submenu.addElement(item);
}
}
}
}
XHTML:
<p:menubar model="#{SessionUser.menumodel}"/>
答案 1 :(得分:1)
我回应自己。
要使用menumodel,您需要一个子菜单,用自己的菜单项包装(或包含)所有菜单项或子菜单。
Menumodel
。mySubmenu
。Menuitems
,然后将其添加到mySubmenu
。Submenu
个对象(可包含Menuitems
本身)添加到mySubMenu
。mySubmenu
和MenuItem
项的Submenu
最初创建的Menumodel
。谢谢Lamq ,你帮助我积极主动。 (抱歉我的英文::)