# The Java EE 7 Tutorial

# 16.7 Registering a Custom Validator

If the application developer provides an implementation of the `javax.faces.validator.Validator` interface to perform validation, you must register this custom validator either by using the `@FacesValidator` annotation, as described in Implementing the Validator Interface, or by using the `validator` XML element in the application configuration resource file:

    <validator>
        ...
        <validator-id>FormatValidator</validator-id>
        <validator-class>
            myapplication.validators.FormatValidator
        </validator-class>
        <attribute>
            ...
            <attribute-name>formatPatterns</attribute-name>
            <attribute-class>java.lang.String</attribute-class>
        </attribute>
    </validator>

Attributes specified in a `validator` tag override any settings in the `@FacesValidator` annotation.

The `validator-id` and `validator-class` elements are required subelements. The `validator-id` element represents the identifier under which the `Validator` class should be registered. This ID is used by the tag class corresponding to the custom `validator` tag.

The `validator-class` element represents the fully qualified class name of the `Validator` class.

The `attribute` element identifies an attribute associated with the `Validator` implementation. It has required `attribute-name` and `attribute-class` subelements. The `attribute-name` element refers to the name of the attribute as it appears in the `validator` tag. The `attribute-class` element identifies the Java type of the value associated with the attribute.

Creating and Using a Custom Validator explains how to implement the `Validator` interface.

Using a Custom Validator explains how to reference the validator from the page.