Menu
Menu is a highly customizable navigation/command component that supports dynamic and static positioning.
Source
<h:form>
<p:growl id="messages"/>
<h3>Plain Menu</h3>
<p:menu>
<p:submenu label="Ajax Menuitems">
<p:menuitem value="Save" actionListener="#{menuBean.save}" update="messages" icon="ui-icon-disk" />
<p:menuitem value="Update" actionListener="#{menuBean.update}" update="messages" icon="ui-icon-arrowrefresh-1-w"/>
</p:submenu>
<p:submenu label="Non-Ajax Menuitem">
<p:menuitem value="Delete" actionListener="#{menuBean.delete}" update="messages" ajax="false" icon="ui-icon-close"/>
</p:submenu>
<p:submenu label="Navigations">
<p:menuitem value="External" url="http://www.primefaces.org" icon="ui-icon-home"/>
<p:menuitem value="Internal" outcome="/mobile/index" icon="ui-icon-star"/>
</p:submenu>
</p:menu>
<h3>Overlay</h3>
<p:commandButton id="dynaButton" value="Show" type="button"/>
<p:menu overlay="true" trigger="dynaButton" my="left top" at="left bottom">
<p:submenu label="Ajax Menuitems">
<p:menuitem value="Save" actionListener="#{menuBean.save}" update="messages" icon="ui-icon-disk"/>
<p:menuitem value="Update" actionListener="#{menuBean.update}" update="messages" icon="ui-icon-arrowrefresh-1-w"/>
</p:submenu>
<p:submenu label="Non-Ajax Menuitem">
<p:menuitem value="Delete" actionListener="#{menuBean.delete}" update="messages" ajax="false" icon="ui-icon-close"/>
</p:submenu>
<p:submenu label="Navigations">
<p:menuitem value="External" url="http://www.primefaces.org" icon="ui-icon-home"/>
<p:menuitem value="Internal" outcome="/mobile/index" icon="ui-icon-star"/>
</p:submenu>
</p:menu>
<h3>Programmatic Menu</h3>
<p:menu model="#{menuBean.model}"/>
</h:form>
package org.primefaces.examples.view;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.component.menuitem.MenuItem;
import org.primefaces.component.submenu.Submenu;
import org.primefaces.model.DefaultMenuModel;
import org.primefaces.model.MenuModel;
public class MenuBean {
private MenuModel model;
public MenuBean() {
model = new DefaultMenuModel();
//First submenu
Submenu submenu = new Submenu();
submenu.setLabel("Dynamic Submenu 1");
MenuItem item = new MenuItem();
item.setValue("Dynamic Menuitem 1.1");
item.setUrl("#");
submenu.getChildren().add(item);
model.addSubmenu(submenu);
//Second submenu
submenu = new Submenu();
submenu.setLabel("Dynamic Submenu 2");
item = new MenuItem();
item.setValue("Dynamic Menuitem 2.1");
item.setUrl("#");
submenu.getChildren().add(item);
item = new MenuItem();
item.setValue("Dynamic Menuitem 2.2");
item.setUrl("#");
submenu.getChildren().add(item);
model.addSubmenu(submenu);
}
public MenuModel getModel() {
return model;
}
public void save() {
addMessage("Data saved");
}
public void update() {
addMessage("Data updated");
}
public void delete() {
addMessage("Data deleted");
}
public void addMessage(String summary) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
package org.primefaces.examples.view;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import org.primefaces.model.menu.DefaultMenuItem;
import org.primefaces.model.menu.DefaultMenuModel;
import org.primefaces.model.menu.DefaultSubMenu;
import org.primefaces.model.menu.MenuModel;
public class MenuBean {
private MenuModel model;
public MenuBean() {
model = new DefaultMenuModel();
//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);
}
public MenuModel getModel() {
return model;
}
public void save() {
addMessage("Data saved");
}
public void update() {
addMessage("Data updated");
}
public void delete() {
addMessage("Data deleted");
}
public String redirect() {
return "home?faces-redirect=true";
}
public void addMessage(String summary) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, summary, null);
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
