Benutzerdefinierter Validator in JSF 2.0
In diesem Artikel zeigen wir Ihnen, wie Sie einen benutzerdefinierten Validator in JSF 2.0 erstellen
Schritte
-
Erstellen Sie eine Validatorklasse, indem Sie die Schnittstelle von
javax.faces.validator.Validatorimplementieren. -
Überschreiben Sie die Methode
validate(). -
Weisen Sie eine eindeutige Validator-ID über die Annotation von
@FacesValidatorzu. -
Verweisen Sie die benutzerdefinierte Validatorklasse über das Tag
f: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.

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.

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