Пользовательский валидатор в JSF 2.0

Пользовательский валидатор в JSF 2.0

В этой статье мы покажем вам, как создать собственный валидатор в JSF 2.0.

меры

  1. Создайте класс валидатора, реализовав интерфейсjavax.faces.validator.Validator.

  2. Переопределить методvalidate().

  3. Назначьте уникальный идентификатор валидатора с помощью аннотации@FacesValidator.

  4. Ссылка на пользовательский класс валидатора на компонент JSF через тегf:validator.

Подробное руководство по созданию настраиваемого имени валидатора «EmailValidator» - для проверки адреса электронной почты с помощью регулярного выражения Java.

1. Структура папок

Структура каталогов этого проекта.

jsf2-custom-validator-folder

2. Класс валидатора

Создайте собственный класс валидатора и реализуйте интерфейсjavax.faces.validator.Validator.

package com.example;

import javax.faces.validator.Validator;
public class EmailValidator implements Validator{
    //...
}

Переопределяет методvalidate().

public class EmailValidator implements Validator{

    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {
        //...
    }
}

Назначьте уникальный идентификатор валидатора@FacesValidator.

package com.example;

import javax.faces.validator.Validator;

@FacesValidator("com.example.EmailValidator")
public class EmailValidator implements Validator{
    //...
}

Смотрите полный пользовательский класс валидатора:

EmailValidator.java

package com.example;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.FacesValidator;
import javax.faces.validator.Validator;
import javax.faces.validator.ValidatorException;

@FacesValidator("com.example.EmailValidator")
public class EmailValidator implements Validator{

    private static final String EMAIL_PATTERN = "^[_A-Za-z0-9-]+(\\." +
            "[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*" +
            "(\\.[A-Za-z]{2,})$";

    private Pattern pattern;
    private Matcher matcher;

    public EmailValidator(){
          pattern = Pattern.compile(EMAIL_PATTERN);
    }

    @Override
    public void validate(FacesContext context, UIComponent component,
            Object value) throws ValidatorException {

        matcher = pattern.matcher(value.toString());
        if(!matcher.matches()){

            FacesMessage msg =
                new FacesMessage("E-mail validation failed.",
                        "Invalid E-mail format.");
            msg.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(msg);

        }

    }
}

Выше показан пользовательский класс валидатора с идентификаторомcom.example.EmailValidator. Если адрес электронной почты недействителен, возвращает сообщение об ошибкеFacesMessage.

Note
Для получения подробных сведений о шаблоне регулярного выражения электронной почты, пожалуйста, обратитесь к этому «http://www.example.com/regular-expressions/how-to-validate-email-address-with -regular-expression / [Проверить электронную почту с помощью регулярного выражения Java] ».

3. Управляемый Боб

Нормальный управляемый бин с именем «пользователь», здесь ничего особенного.

package com.example;

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name="user")
@SessionScoped
public class UserBean implements Serializable{

    String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

}

4. Страница JSF

Ссылка выше настраиваемого валидатора на компонент JSF через атрибут «validatorId» в тегеf:validator.

Spring DI в пользовательский валидатор JSF
Если вам нужен@Autowired в пользовательском валидаторе JSF, используетсяbinding вместоvalidatorId. Прочтите этот пост -Spring @Autowired into JSF custom validator.

default.xhtml




    

    

Custom validator in JSF 2.0

Enter your email :

result.xhtml




    

        

Custom validator in JSF 2.0

Email Address :

5. Demo

Проверяет адрес электронной почты с помощью пользовательского валидатора, если адрес электронной почты недействителен, возвращает сообщение об ошибке.

jsf2-custom-validator-example

Скачать исходный код

Скачать -JSF-2-Custom-Validator-Example (10 КБ)