问题
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:
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}"/>
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 !!!.
回答1:
Please, have a look at the page:
PrimeFaces - New MenuModel.
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.
回答2:
Personally i create my menu dynamically like this on 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);
}
}
}
}
来源:https://stackoverflow.com/questions/23481970/primefaces-how-to-create-pmenubar-dynamically-in-primefaces-4