Menu - Menubar
Menubar displays root items horizontally and nested items as tiered.
Documentation
<h:form>
<p:growl id="messages"/>
<p:menubar>
<p:submenu label="File" icon="pi pi-file">
<p:submenu label="New" icon="pi pi-briefcase">
<p:menuitem value="Project" url="#" />
<p:menuitem value="Other" url="#" />
</p:submenu>
<p:menuitem value="Open" url="#" />
<p:separator />
<p:menuitem value="Quit" url="#" />
</p:submenu>
<p:submenu label="Edit" icon="pi pi-pencil">
<p:menuitem value="Undo" url="#" icon="pi pi-angle-double-left" />
<p:menuitem value="Redo" url="#" icon="pi pi-angle-double-right" />
</p:submenu>
<p:submenu label="Help" icon="pi pi-question">
<p:menuitem value="Contents" url="#" />
<p:submenu label="Search" icon="pi pi-search">
<p:submenu label="Text">
<p:menuitem value="Workspace" url="#" />
</p:submenu>
<p:menuitem value="File" url="#" />
</p:submenu>
</p:submenu>
<p:submenu label="Actions" icon="pi pi-cog">
<p:submenu label="Ajax" icon="pi pi-refresh">
<p:menuitem value="Save" action="#{menuView.save}" icon="pi pi-save" update="messages"/>
<p:menuitem value="Update" action="#{menuView.update}" icon="pi pi-refresh" update="messages"/>
</p:submenu>
<p:submenu label="Non-Ajax" icon="pi pi-clone">
<p:menuitem value="Delete" action="#{menuView.delete}" icon="pi pi-times" update="messages" ajax="false"/>
</p:submenu>
</p:submenu>
<p:menuitem value="Quit" url="http://www.primefaces.org" icon="pi pi-times" />
<f:facet name="options">
<p:inputText style="margin:1px 10px 1px 1px;" placeholder="Search"/>
<p:commandButton type="button" value="Logout" icon="pi pi-home" />
</f:facet>
</p:menubar>
</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);
}
}