h:commandButton

HtmlCommandButton is a UICommand component that renders a styleable HTML <input> element. The default type is submit. The component must be a child of h:form in order to trigger the action or actionListener.

Immediate Usage

When the immediate attribute is true, the action and actionListener callbacks execute during the APPLY_REQUEST_VALUES phase of the JSF lifecycle, rather than the normal INVOKE_APPLICATION phase.

Source Code

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html"
	xmlns:f="http://xmlns.jcp.org/jsf/core" xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

	<!-- Example 1: ActionListener execution when immediate is true -->
	<h:form>
		<h:messages globalOnly="true" styleClass="feedback" />
		<h:commandButton actionListener="#{commandBackingBean.actionListener}" immediate="true"
			value="#{i18n['submit']}">
			<f:ajax render="@form" />
		</h:commandButton>
	</h:form>

	<!-- Example 2: ActionListener execution when immediate is false (the default) -->
	<h:form>
		<h:messages globalOnly="true" styleClass="feedback" />
		<h:commandButton actionListener="#{commandBackingBean.actionListener}" value="#{i18n['submit']}">
			<f:ajax execute="@form" render="@form" />
		</h:commandButton>
	</h:form>

</ui:composition>
@ManagedBean
@RequestScoped
public class CommandBackingBean {

	private static final Logger logger = LoggerFactory.getLogger(CommandBackingBean.class);

	// Injections
	@ManagedProperty(value = "#{commandModelBean}")
	private CommandModelBean commandModelBean;

	public void actionListener(ActionEvent actionEvent) {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		PhaseId phaseId = facesContext.getCurrentPhaseId();
		logger.debug("actionListener: phaseId=[{0}]", phaseId.toString());

		String phaseName = phaseId.toString();
		FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName +
				" phase of the JSF lifecycle.");
		facesContext.addMessage(null, facesMessage);
	}

	public void ajaxListener(AjaxBehaviorEvent ajaxBehaviorEvent) {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		PhaseId phaseId = facesContext.getCurrentPhaseId();
		logger.debug("ajaxListener: phaseId=[{0}]", phaseId.toString());

		String phaseName = phaseId.toString();
		FacesMessage facesMessage = new FacesMessage("The ajaxListener method was called during the " + phaseName +
				" phase of the JSF lifecycle.");
		facesContext.addMessage(null, facesMessage);
	}

	public void attributeActionListener(ActionEvent actionEvent) {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		PhaseId phaseId = facesContext.getCurrentPhaseId();
		logger.debug("actionListener: phaseId=[{0}]", phaseId.toString());

		String value = (String) actionEvent.getComponent().getAttributes().get("attribute");

		String phaseName = phaseId.toString();
		FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName +
				" phase of the JSF lifecycle.The attribute value is " + value);
		facesContext.addMessage(null, facesMessage);
	}

	public void attributesActionListener(ActionEvent actionEvent) {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		PhaseId phaseId = facesContext.getCurrentPhaseId();
		logger.debug("actionListener: phaseId=[{0}]", phaseId.toString());

		Map<String, Object> attributes = actionEvent.getComponent().getAttributes();
		String value1 = (String) attributes.get("attribute1");
		String value2 = (String) attributes.get("attribute2");

		String phaseName = phaseId.toString();
		FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName +
				" phase of the JSF lifecycle.The attributes value are " + value1 + " and " + value2);
		facesContext.addMessage(null, facesMessage);
	}

	public void feedbackListener(ActionEvent actionEvent) {

		String value = "";

		List<UIComponent> children = actionEvent.getComponent().getChildren();

		for (UIComponent uiComponent : children) {

			if (uiComponent instanceof UIOutput) {
				value = (String) ((UIOutput) uiComponent).getValue();
			}
		}

		FacesContext facesContext = FacesContext.getCurrentInstance();
		logger.debug("feedbackListener: You selected the '" + value + "' menu item.");

		FacesMessage facesMessage = new FacesMessage("You selected the '" + value + "' menu item.");
		facesContext.addMessage(null, facesMessage);
	}

	public Map<String, Object> getAttributes() {
		Map<String, Object> attributes = new HashMap<String, Object>();
		attributes.put("attribute1", "value1");
		attributes.put("attribute2", "value2");

		return attributes;
	}

	public void parameterActionListener() {

		FacesContext facesContext = FacesContext.getCurrentInstance();
		PhaseId phaseId = facesContext.getCurrentPhaseId();
		logger.debug("actionListener: phaseId=[{0}]", phaseId.toString());

		Map<String, String> requestParameterMap = facesContext.getExternalContext().getRequestParameterMap();
		String value = requestParameterMap.get("parameter");

		String phaseName = phaseId.toString();
		FacesMessage facesMessage = new FacesMessage("The actionListener method was called during the " + phaseName +
				" phase of the JSF lifecycle.The parameter value is " + value);
		facesContext.addMessage(null, facesMessage);
	}

	public void selectionListener(ActionEvent actionEvent) {

		UICommand uiCommand = (UICommand) actionEvent.getComponent();
		Customer customer = (Customer) uiCommand.getValue();
		commandModelBean.setSelectedCustomer(customer);
	}

	public void setCommandModelBean(CommandModelBean commandModelBean) {
		this.commandModelBean = commandModelBean;
	}
}
Liferay Faces Bridge Implementation 5.0.0 + Showcase Common 3.1.1 + Liferay Faces Util 3.4.1 + Mojarra 2.2.20