java - 如何使用 panelmenu 和 defaultmenumodel 实现程序化菜单

标签 java primefaces menuitem submenu

我尝试在 PrimeFaces 4.0 中使用 defaultmenumodelpanelmenu 实现程序化 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/

相关文章:

primefaces - 如何在 BootsFaces 和 PrimeFaces 中屏蔽非西方拉丁字符?

java - Primefaces 数据表分页不起作用

android - 如何为同一 Activity 中的不同 fragment 设置不同的 MenuItem?

java - Jenkins Service Star 在 Ubuntu 16.04 上失败

java - 在java中旋转一个二维数组n度

java - 特定时间间隔内的时间

用于打印卡片的 Java 多维数组

ajax - 如何使用 p :ajax to update several components in order

php - 在 Woocommerce 我的帐户菜单中的注销项目上方添加自定义项目

c# - 在 WPF 中单击时更改菜单背景