2016-04-12 6 views
0

Ich habe eine benutzerdefinierte Validierungs-Annotation für eindeutige E-Mails erstellt (Wenn sich der Benutzer registriert, prüft das Programm, ob sich die E-Mail bereits in der Datenbank befindet).So verhindern Sie die Spring-Validierung beim Update

Alles funktioniert gut, aber wenn ich Benutzer-Informationen ändern müssen und keine neue ich in ein Problem zu schaffen, laufen die „E-Mail ist bereits im Einsatz“

Kann ich irgendwie ausschalten nur @UniqueEmail Validierung sagt (Ich brauche die anderen wie E-Mail-Muster und Passwort-Validierung)?

Alle Validierungsannotationen befinden sich in derselben User-Bean.

Vielen Dank.

+0

Sie es nicht deaktivieren, fixieren Sie Ihre Validierung statt. –

Antwort

0

Ich gehe davon aus, dass Sie javax.validation verwenden.

Zuerst müssen Sie ein interface OnUpdate:

javax.validation.groups.Default 

public interface OnUpdate extends Default {} 

Jetzt müssen Sie alle die Anmerkungen setzen, die auf UPDATE zu nur laufen müssen:

@NotNull(groups = OnUpdate.class) 

Nun haben Sie geteilt Ihre Validierungen in zwei Gruppen, diejenigen in OnUpdate und diejenigen in Default. Running Default wird diejenigen in OnUpdate als OnUpdate erweitert Default enthalten.

Jetzt wird es ein wenig schwierig - Sie müssen dem Framework mitteilen, welche Validierungen bei jeder Aufgabe ausgeführt werden sollen.

Wenn JPA verwenden müssen Sie nur die folgende Eigenschaft setzen:

javax.persistence.validation.group.pre-update = com.my.package.OnUpdate 
+0

Jep Danke! Das hat für mich funktioniert! Versucht, es zu reparieren verschiedene Wege, aber diese ist die einfachste und eleganteste: D – JavaEvgen

Verwandte Themen