Class FacesLabelMessageInterpolator

java.lang.Object
org.omnifaces.validator.FacesLabelMessageInterpolator
All Implemented Interfaces:
MessageInterpolator

public class FacesLabelMessageInterpolator extends Object implements MessageInterpolator

Unlike native Faces validation error messages, in a bean validation message by default the label of the component where a validation constraint violation originated from can not be displayed in the middle of a message. Using the jakarta.faces.validator.BeanValidator.MESSAGE bundle key such label can be put in front or behind the message, but that's it. With this FacesLabelMessageInterpolator a label can appear in the middle of a message, by using the special placeholder {faces.label} in bean validation messages.

Note that Bean Validation is not only called from within Faces, and as such Faces might not be available. If Faces is not available occurrences of {faces.label} will be replaced by an empty string. The user should take care that messages are compatible with both situations if needed.

This message interpolator is not needed for putting a component label before or after a bean validation message. That functionality is already provided by Faces itself via the jakarta.faces.validator.BeanValidator.MESSAGE key in any resource bundle known to Faces.

Installation

Create a /META-INF/validation.xml file in WAR with the following contents:

 <?xml version="1.0" encoding="UTF-8"?>
 <validation-config
     xmlns="https://jakarta.ee/xml/ns/validation/configuration"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="https://jakarta.ee/xml/ns/validation/configuration https://jakarta.ee/xml/ns/validation/validation-configuration-3.0.xsd"
     version="3.0"
 >
     <message-interpolator>org.omnifaces.validator.FacesLabelMessageInterpolator</message-interpolator>
 </validation-config>
 

Usage

As an example, the customization of @Size in ValidationMessages.properties:

 jakarta.validation.constraints.Size.message = The size of {faces.label} must be between {min} and {max} characters
 
Since:
1.5
Author:
Arjan Tijms