Java Primefaces :如何在 primefaces 4 中动态创建 <p:menubar> ?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 
原文地址: http://stackoverflow.com/questions/23481970/
Warning: these are provided under cc-by-sa 4.0 license.  You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Primefaces : how to create <p:menubar> dynamically in primefaces 4?
提问by simoi chigo
i'm migrating from primefaces 3.4 to primfaces 4.I had the menubar created dinamically in primefaces 3.4 with no probleme. here is the bean:
我正在从primefaces 3.4迁移到primfaces 4。我在primefaces 3.4中以动态方式创建了菜单栏,没有问题。这是豆子:
public MenuBean() {
    MenuItem menuItem = new MenuItem();
    Submenu submenu = new Submenu();
    submenu.setLabel("Nos Solutions");
    menuItem.setValue("Computers");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    menuItem = new MenuItem();
    menuItem.setValue("Clothes");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    simpleMenuModel.addSubmenu(submenu);
    submenu = new Submenu();
    submenu.setLabel("Nos Problemes");
    menuItem.setValue("Computers");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    menuItem = new MenuItem();
    menuItem.setValue("Clothes");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    simpleMenuModel.addSubmenu(submenu);
    submenu = new Submenu();
    submenu.setLabel("Nos Solutions");
    menuItem.setValue("Computers");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    menuItem = new MenuItem();
    menuItem.setValue("Clothes");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    simpleMenuModel.addSubmenu(submenu);
    submenu = new Submenu();
    submenu.setLabel("Nos Solutions");
    menuItem.setValue("Computers");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    Submenu submenu1 = new Submenu();
    submenu1.setLabel("Offres");
    menuItem = new MenuItem();
    menuItem.setValue("Stage Etudiants");
    menuItem.setUrl("#");
    submenu1.getChildren().add(menuItem);
    menuItem = new MenuItem();
    menuItem.setValue("Jeunes diplomés");
    menuItem.setUrl("#");
    submenu1.getChildren().add(menuItem);
    submenu.getChildren().add(submenu1);
    menuItem = new MenuItem();
    menuItem.setValue("Clothes");
    menuItem.setUrl("#");
    submenu.getChildren().add(menuItem);
    simpleMenuModel.addSubmenu(submenu);
    menuItem = new MenuItem();
    menuItem.setValue("Clothe");
    menuItem.setUrl("#");
    simpleMenuModel.addMenuItem(menuItem);
}
public MenuModel getSimpleMenuModel() {
    return simpleMenuModel;
}
here the xhtml:
<p:menubar model="#{menuBean.simpleMenuModel}"/>
这里是 xhtml:
<p:menubar model="#{menuBean.simpleMenuModel}"/>
now in primefaces 4 the classes/interfaces seems to be changed, and i don't know to do it in this version. can anyone help please !!!.
现在在 primefaces 4 中,类/接口似乎发生了变化,我不知道在这个版本中这样做。任何人都可以帮忙吗!!!。
回答by Joffrey Hernandez
Personally i create my menu dynamically like this on primeface 4.0 :
我个人在primeface 4.0上像这样动态创建我的菜单:
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);
            }
        }
    }
}
回答by Veronika
Please, have a look at the page:
请看一下页面:
Simple example:
简单的例子:
MenuModel model = new DefaultMenuModel();
DefaultSubMenu subMenu = new DefaultSubMenu("some submenu");
DefaultMenuItem menuItem = new DefaultMenuItem("some item");
subMenu.addElement(menuItem);
model.addElement(subMenu);
model.generateUniqueIds();
Method generateUniqueIds()will spare you from creating and setting id strings yourself.
方法generateUniqueIds()将使您免于自己创建和设置 id 字符串。

