JSF Showcase

h:message

HtmlMessage is a UIMessage component that renders a <span> element containing the text of a single FacesMessage for an associated component.

General Usage

The component can be associated with an input component like h:inputText via the for attribute. If it is a child of h:field then it will be automatically styled when validation fails.

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">

	<h:form>
		<h:inputText id="inputText" required="true" styleClass="field"
			valueChangeListener="#{messageBackingBean.valueChangeListener}" />
		<h:message for="inputText" />
		<h:commandButton value="#{i18n['submit-and-re-render-field']}">
			<f:ajax execute="@form" render="field" />
		</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