Validateur personnalisé dans JSF 2.0

Validateur personnalisé dans JSF 2.0

Dans cet article, nous allons vous montrer comment créer un validateur personnalisé dans JSF 2.0

Pas

  1. Créez une classe de validateur en implémentant l'interfacejavax.faces.validator.Validator.

  2. Remplacez la méthodevalidate().

  3. Attribuez un ID de validateur unique via l'annotation@FacesValidator.

  4. Référencez la classe de validation personnalisée au composant JSF via la balisef:validator.

Un guide détaillé pour créer un nom de validateur personnalisé "EmailValidator" - pour valider l'adresse e-mail via l'expression régulière Java.

1. Structure des dossiers

Structure de répertoire de ce projet.

jsf2-custom-validator-folder

2. Classe de validateur

Créez une classe de validateur personnalisée et implémentez l'interfacejavax.faces.validator.Validator.

package com.example;

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

Remplace la méthodevalidate().

public class EmailValidator implements Validator{

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

Attribuez un ID de validateur unique avec@FacesValidator.

package com.example;

import javax.faces.validator.Validator;

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

Voir une classe de validateur personnalisée complète:

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);

        }

    }
}

Ci-dessus se trouve une classe de validateur personnalisée, avec l'idcom.example.EmailValidator. Si l'e-mail n'est pas valide, renvoie le message d'erreurFacesMessage.

Note
Pour obtenir des explications détaillées sur le modèle d'expression régulière d'e-mail, veuillez vous référer à ce «http://www.example.com/regular-expressions/how-to-validate-email-address-with -regulier-expression / [Valider l'e-mail avec l'expression régulière Java] ».

3. Bean géré

Un bean géré normal nommé «utilisateur», rien de spécial ici.

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. Page JSF

Référence ci-dessus du validateur personnalisé au composant JSF via l'attribut «validatorId» dans la balisef:validator.

Spring DI dans le validateur personnalisé JSF
Si vous avez besoin de@Autowired dans le validateur personnalisé JSF, utilisebinding au lieu devalidatorId. Lisez cet article -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

Valide l'adresse e-mail via un validateur personnalisé, si l'adresse e-mail n'est pas valide, renvoyez un message d'erreur.

jsf2-custom-validator-example

Télécharger le code source

Téléchargez-le -JSF-2-Custom-Validator-Example (10 Ko)