HTML and CSS Reference
We already have seen examples of <f:validateRequired> and <f:validateLongRange> validators in Listing 3-11.
<f:validateDoubleRange> is the same as the <f:validateLongRange> ; however, it works with Double instead of
Long. <f:validateLength> validator is used to validate that the EditableValueHolder value is within the specified
length range. For example:
<f:validateLength minimum="20" maximum="120"/>
As shown in this example, the address attribute of person managed bean is validated to have a length of
minimum 20 and maximum 120 characters using the <f:validateLength> validator in the "address" input text.
<f:validateRegex> validator is used to validate that the EditableValueHolder value is complaint with a
specified Java regular expression.
As shown in this example, the email attribute of person managed bean is validated to have a valid e-mail using
the "(.+@.+\.[a-zA-Z]+)?" regular expression in the pattern field of the <f:validateRegex> validator for the
"email" input text.
<f:validateBean> validator is used to assign the EditableValueHolder local value validation to the Java Bean
Validation APIs (JSR 303). We will go into the details of this validator in the “JSR 303 Bean Validation with JSF” section.
You can override validation messages by using either the requiredMessage attribute of the
EditableValueHolder s for the required field validation error message or the validatorMessage attribute for general
validation error messages on the EditableValueHolder . For example:
requiredMessage="You have to enter a number"
validatorMessage="Number has to be minimum 10 and maximum 100">
<f:validateLongRange minimum="10" maximum="100"/>
This will show a required field validation error message, “You have to enter a number,” if the user does not enter a
value in the input text, and will show a validation message, “Number has to be minimum 10 and maximum 100”, if the
user enters a number that is out of the range (less than 10 or greater than 100).
Building Custom JSF Validator
Adding to all of the mentioned built-in validators provided by the JSF framework, JSF allows the developers to create
their own custom validators. Let's see an example to illustrate this. Assume we want to have an EmailValidator
custom validator which validates that the user input is complaint with an e-mail format.
In order to implement our EmailValidator custom validator, we need to extend the Validator interface and
implement validate method. Listing 3-12 shows the EmailValidator implementation.