JSF Showcase

h:messages

HtmlMessages is a UIMessages component that renders the text of one or more FacesMessage instances inside a <ul> element or <table> element for an associated component, according to the layout attribute.

General Usage

The component is typically placed inside an h:form in order to render messages within the context of a form.



Source Code

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

	<!-- Example 1: Render all messages in a <ul> (the default) -->
	<h:form>
		<h:messages />
		<h:outputLabel for="inputText" value="#{i18n['text-field']}" />
		<h:inputText id="inputText" label="#{i18n['text-field']}" required="true"
			valueChangeListener="#{messageBackingBean.valueChangeListener}" />
		<br />
		<h:commandButton action="#{messageBackingBean.submit}" value="#{i18n['submit-and-re-render-form']}">
			<f:ajax execute="@form" render="@form" />
		</h:commandButton>
	</h:form>

	<!-- Example 2: Render all messages in a <table> -->
	<h:form>
		<h:messages layout="table" />
		<h:outputLabel for="inputText" value="#{i18n['text-field']}" />
		<h:inputText id="inputText" label="#{i18n['text-field']}" required="true"
			valueChangeListener="#{messageBackingBean.valueChangeListener}" />
		<br />
		<h:commandButton action="#{messageBackingBean.submit}" value="#{i18n['submit-and-re-render-form']}">
			<f:ajax execute="@form" render="@form" />
		</h:commandButton>
	</h:form>

	<!-- Example 3: Render only global messages in a <ul> -->
	<h:form>
		<h:messages globalOnly="true" layout="table" />
		<h:outputLabel for="inputText" value="#{i18n['text-field']}" />
		<h:inputText id="inputText" label="#{i18n['text-field']}" required="true"
			valueChangeListener="#{messageBackingBean.valueChangeListener}" />
		<br />
		<h:commandButton action="#{messageBackingBean.submit}" value="#{i18n['submit-and-re-render-form']}">
			<f:ajax execute="@form" render="@form" />
		</h:commandButton>
	</h:form>

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

	public void submit() {

		FacesMessage globalFacesMessage = new FacesMessage("Your request processed successfully.");
		FacesContext facesContext = FacesContext.getCurrentInstance();
		facesContext.addMessage(null, globalFacesMessage);
	}

	public void valueChangeListener(ValueChangeEvent valueChangeEvent) {

		Object newValue = valueChangeEvent.getNewValue();
		int totalChars = 0;

		if (newValue != null) {
			totalChars = newValue.toString().length();
		}

		FacesMessage globalFacesMessage = new FacesMessage("You typed " + totalChars + " characters.");
		FacesContext facesContext = FacesContext.getCurrentInstance();
		String componentClientId = valueChangeEvent.getComponent().getClientId();
		facesContext.addMessage(componentClientId, globalFacesMessage);
	}
}
Liferay Faces Bridge Implementation 4.0.0 + Showcase Common 3.0.0 + Liferay Faces Util 3.0.1-SNAPSHOT + Mojarra 2.2.13