Menu - MenuButton
MenuButton groups multiple items in a popup.
Documentation
<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>
@Named
@RequestScoped
public class MenuView {
private MenuModel model;
@PostConstruct
public void init() {
model = new DefaultMenuModel();
//First submenu
DefaultSubMenu firstSubmenu = DefaultSubMenu.builder()
.label("Dynamic Submenu")
.build();
DefaultMenuItem item = DefaultMenuItem.builder()
.value("External")
.url("http://www.primefaces.org")
.icon("pi pi-home")
.build();
firstSubmenu.getElements().add(item);
model.getElements().add(firstSubmenu);
//Second submenu
DefaultSubMenu secondSubmenu = DefaultSubMenu.builder()
.label("Dynamic Actions")
.build();
item = DefaultMenuItem.builder()
.value("Save")
.icon("pi pi-save")
.command("#{menuView.save}")
.update("messages")
.build();
secondSubmenu.getElements().add(item);
item = DefaultMenuItem.builder()
.value("Delete")
.icon("pi pi-times")
.command("#{menuView.delete}")
.ajax(false)
.build();
secondSubmenu.getElements().add(item);
item = DefaultMenuItem.builder()
.value("Redirect")
.icon("pi pi-search")
.command("#{menuView.redirect}")
.build();
secondSubmenu.getElements().add(item);
model.getElements().add(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);
}
}