JSF 2 / Mehrere Validatoren

mandreo

Mitglied
Guten Abend,

Ich möchte eine Email-Adresse validieren.

Im Model wird der String mit Metadatenvalidierung validiert:

Account.java
Java:
import org.hibernate.validator.constraints.Email;

...

@NotNull
@Email
private String email;

Nun habe ich in der BackingBean noch einen eigenen Validator, der nachsehen soll, ob die Email in der Datenbank schon vorhanden ist:

AccountBean.java
Java:
public void emailValidate(FacesContext ctx, UIComponent comp, Object value)
	throws ValidatorException{
		
	if(value instanceof String) {
		String strValue = (String) value;
			
		Account account = accountService.findByEmail(strValue);
			
		if(account != null) {
			FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
					"Email existiert schon", null);
			throw new ValidatorException(msg);
		}
	}
}

In der xhtml Datei binde ich meinen eigenen Validator ein:

[XML]
<h:eek:utputLabel for="email" value="Email"/>
<h:inputText id="email" value="#{accountBean.account.email}" validator="#{accountBean.emailValidate}"/>
[/XML]

Jetzt wird leider nur mein eigener Validator aufgerufen und die Annotation @Email wird nicht mehr beachtet.

Kann ich beide Validatoren aufrufen oder muss ich einen Validator erstellen, der alles macht?
 

mandreo

Mitglied
Okay hat sich erledigt!

Wenn ich meinen eigenen Validator eingebunden habe, dann wird die Email doch mit dem eigenen und mit der Annotation validiert.

Das Problem ist einfach, dass der Hibernate Email Constaint nicht richtig funktioniert.

Wenn man "a@b" eingibt, validiert Hibernate die Emailadresse als korrekt. Verrückte Sache.

Ich habe es immer nur in dieser Form getestet "a@b", aber wenn man beipsielsweise "falscheemail" eingibt kommt die Hibernate Message.

Kann diese Fehlfunktion eventuell noch wer bestätigen (Die Bibliothek kommt von GlassFishv3), dann schreib ich ein Bugreport.

Grüße,
mandreo
 
M

maki

Gast
a@b könnte doch eine gültige eMail Addresse sein, oder hab ich dich falsch verstanden?
 
M

maki

Gast
admin@localhost ist doch genauso eine mögliche, gültige eMail Addresse ;)

Im Endeffekt sind diese Methoden alle nciht sicher, eine sichere Überprüfung wäre sehr aufwändig...
 

Ähnliche Java Themen

Neue Themen


Oben