Java EE und Primefaces 5.1: Menü mit Untermenüs dynamisch im Controller erstellen

Nach einem Update auf Primefaces 5.1 wurde das komplette dynamisch erstellte Menü angezeigt, allerdings gab es Fehlermeldungen, wenn man auf Einträge in Untermenüs klickte.
Die Fehlermeldungen betreffen die Methode findMenuitem(List<MenuElement> elements, String id) der Klasse org.primefaces.component.menu.BaseMenuRenderer

 

Der Showcase von Primefaces ist wohl etwas veraltet.

Sobald man im Kontroller Untermenüs erzeugt, müssen bei deren Einträgen die ID festgelegt werden. Und zwar nicht wie in der Dokumentation nur als "unique identifier", sondern in der Form:

SubMenu0
-- MenuItem (id="0_0")
-- MenuItem (id="0_1")
SubMenu1
-- MenuItem (id="1_0")
-- MenuItem (id="1_1")

Codebeispiel:

private void createDepartmentMenu(DefaultMenuModel menu){             
    List<Department> departments = getDepartmentList();
    for(int i = 0; i < departments .size(); i++){
        Department dep = departments .get(i);
        DefaultSubMenu subMenu = new DefaultSubMenu(dep.getName());           
       
        DefaultMenuItem item = new DefaultMenuItem("Rechnungen");
        item.setId(i+"_0");
        item.setIcon("ui-icon-bill");
        item.setCommand("#{billController.displayBillList}");
        item.setParam("depid", dep.getDepartmentId());           
        subMenu.addElement(item);                 
           
        item = new DefaultMenuItem("Inventar");
        item.setId(i+"_1");
        item.setIcon("ui-icon-inventar");
        item.setCommand("#{inventarController.displayInventarList}");
        item.setParam("depid", dep.getDepartmentId());
        subMenu.addElement(item);    
           
        menu.addElement(subMenu);
    }
}