MenuButton groups multiple items in a popup.
<h:form> <p:growl id="messages" showDetail="true"/> <p:menuButton value="Options"> <p:menuitem value="Save" action="#{menuView.save}" update="messages" icon="pi pi-save"/> <p:menuitem value="Update" action="#{menuView.update}" update="messages" icon="pi pi-refresh"/> <p:menuitem value="Delete" action="#{menuView.delete}" ajax="false" icon="pi pi-times"/> <p:separator /> <p:menuitem value="Homepage" url="http://www.primefaces.org" icon="pi pi-home"/> </p:menuButton> </h:form>
@ManagedBean public class MenuView { private MenuModel model; @PostConstruct public void init() { model = new DefaultMenuModel(); //First submenu DefaultSubMenu firstSubmenu = new DefaultSubMenu("Dynamic Submenu"); DefaultMenuItem item = new DefaultMenuItem("External"); item.setUrl("http://www.primefaces.org"); item.setIcon("pi pi-home"); firstSubmenu.addElement(item); model.addElement(firstSubmenu); //Second submenu DefaultSubMenu secondSubmenu = new DefaultSubMenu("Dynamic Actions"); item = new DefaultMenuItem("Save"); item.setIcon("pi pi-save"); item.setCommand("#{menuView.save}"); item.setUpdate("messages"); secondSubmenu.addElement(item); item = new DefaultMenuItem("Delete"); item.setIcon("pi pi-times"); item.setCommand("#{menuView.delete}"); item.setAjax(false); secondSubmenu.addElement(item); item = new DefaultMenuItem("Redirect"); item.setIcon("pi pi-search"); item.setCommand("#{menuView.redirect}"); secondSubmenu.addElement(item); model.addElement(secondSubmenu); } public MenuModel getModel() { return model; } public void save() { addMessage("Success", "Data saved"); } public void update() { addMessage("Success", "Data updated"); } public void delete() { addMessage("Success", "Data deleted"); } public void addMessage(String summary, String detail) { FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, detail); FacesContext.getCurrentInstance().addMessage(null, message); } }