Search code examples
jsfprimefacesmenumenubar

Create grandchild in Menu


In my Menu I need to create a submenu in submenu. I need to do this in my MenuBean

below is the image Like I Need:

enter image description here

below is the exemple of primefaces MenuBean, but does not have what I would like

//First submenu
 DefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic Submenu");

 DefaultMenuItem item = new DefaultMenuItem("External");
 item.setUrl("http://www.primefaces.org");
 item.setIcon("ui-icon-home");
 firstSubmenu.addElement(item);

 model.addElement(firstSubmenu);

 //Second submenu
 DefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions");

 item = new DefaultMenuItem("Save");
 item.setIcon("ui-icon-disk");
 item.setCommand("#{menuBean.save}");
 item.setUpdate("messages");
 secondSubmenu.addElement(item);

 item = new DefaultMenuItem("Delete");
 item.setIcon("ui-icon-close");
 item.setCommand("#{menuBean.delete}");
 item.setAjax(false);
 secondSubmenu.addElement(item);

 item = new DefaultMenuItem("Redirect");
 item.setIcon("ui-icon-search");
 item.setCommand("#{menuBean.redirect}");
 secondSubmenu.addElement(item);

 model.addElement(secondSubmenu);

Solution

  • You can add SubMenus into SubMenus. Following the example you gave us, I made a few arrangement so you can see what I mean:

    //First submenu
     DefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic Submenu");
    
     DefaultMenuItem item = new DefaultMenuItem("External");
     item.setUrl("http://www.primefaces.org");
     item.setIcon("ui-icon-home");
     firstSubmenu.addElement(item);
    
    
    
     //Second submenu
     DefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions");
    
     item = new DefaultMenuItem("Save");
     item.setIcon("ui-icon-disk");
     item.setCommand("#{menuBean.save}");
     item.setUpdate("messages");
     secondSubmenu.addElement(item);
    
     item = new DefaultMenuItem("Delete");
     item.setIcon("ui-icon-close");
     item.setCommand("#{menuBean.delete}");
     item.setAjax(false);
     secondSubmenu.addElement(item);
    
     item = new DefaultMenuItem("Redirect");
     item.setIcon("ui-icon-search");
     item.setCommand("#{menuBean.redirect}");
    
     secondSubmenu.addElement(firstSubmenu); //child inside a child
     secondSubmenu.addElement(item);
    
     model.addElement(secondSubmenu);