我尝试在 PrimeFaces 4.0 中使用 defaultmenumodel
和 panelmenu
实现程序化 panelmenu
。问题是当我实现一个简单模型时,一个或多个包含一个或多个菜单项的子菜单运行正常。但是当我实现包含 menuitmes 的子菜单和包含另一个 menuitems 的更多子菜单时,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 可以很好地显示一个项目和一个包含项目的子菜单。
//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);
最佳答案
我这样创建我的菜单:
bean 类:
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}"/>
关于java - 如何使用 panelmenu 和 defaultmenumodel 实现程序化菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22119555/