Benutzerdefinierter Validator in JSF 2.0

Benutzerdefinierter Validator in JSF 2.0

In diesem Artikel zeigen wir Ihnen, wie Sie einen benutzerdefinierten Validator in JSF 2.0 erstellen

Schritte

  1. Erstellen Sie eine Validatorklasse, indem Sie die Schnittstelle vonjavax.faces.validator.Validatorimplementieren.

  2. Überschreiben Sie die Methodevalidate().

  3. Weisen Sie eine eindeutige Validator-ID über die Annotation von@FacesValidatorzu.

  4. Verweisen Sie die benutzerdefinierte Validatorklasse über das Tagf:validatorauf die JSF-Komponente.

Eine detaillierte Anleitung zum Erstellen eines benutzerdefinierten Validatornamens "EmailValidator" - zum Validieren der E-Mail-Adresse über einen regulären Java-Ausdruck.

1. Ordnerstruktur

Verzeichnisstruktur dieses Projekts.

jsf2-custom-validator-folder

2. Validator-Klasse

Erstellen Sie eine benutzerdefinierte Validatorklasse und implementieren Sie die Schnittstelle vonjavax.faces.validator.Validator.

package com.example;

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

Überschreibt dievalidate()-Methode.

public class EmailValidator implements Validator{

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

Weisen Sie eine eindeutige Validator-ID mit@FacesValidator zu.

package com.example;

import javax.faces.validator.Validator;

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

Eine vollständige benutzerdefinierte Validierungsklasse anzeigen:

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

        }

    }
}

Oben ist eine benutzerdefinierte Validatorklasse mit der IDcom.example.EmailValidator. Wenn die E-Mail ungültig ist, wird die FehlermeldungFacesMessagezurückgegeben.

Note
Ausführliche Erläuterungen zum Muster für reguläre E-Mail-Ausdrücke finden Sie unter „http://www.example.com/regular-expressions/how-to-validate-email-address-with -regular-expression / [E-Mail mit regulärem Java-Ausdruck validieren] ”Artikel.

3. Managed Bean

Eine normale verwaltete Bean mit dem Namen "user", hier nichts Besonderes.

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 Seite

Verweis auf den benutzerdefinierten Validator auf die JSF-Komponente über das Attribut "validatorId" im Tag "f:validator".

Spring DI in JSF Custom Validator
Wenn Sie@Autowired in JSF Custom Validator benötigen, verwenden Siebinding anstelle vonvalidatorId. Lesen Sie diesen Beitrag -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

Überprüft die E-Mail-Adresse über einen benutzerdefinierten Validator. Wenn die E-Mail-Adresse ungültig ist, wird eine Fehlermeldung zurückgegeben.

jsf2-custom-validator-example

Quellcode herunterladen

Laden Sie es herunter -JSF-2-Custom-Validator-Example (10 KB)