2010-12-10 13 views
0

Ich frage mich, ob ich etwas übersehen habe oder bietet der Hibernate-Validator keine Annotation, um zu bestätigen, dass 2 Felder gleich sind (zB ein Passwort). Ich weiß, dass ich meine eigenen Validatoren schreiben kann, aber das scheint eine Standardfunktionalität zu sein.Hibernate Validator: validiere 2 Felder entsprechen

+0

Implementierung Beispiel: http://git.springsource.org/greenhouse/greenhouse/trees/master/src/main/java/com/springsource/greenhouse/validation – axtavt

Antwort

0

Nur ging für die benutzerdefinierte Validator-Route. Die anderen 2 Antworten hier sind nicht wirklich auf die Frage bezogen. Mit etwas Googeln fand ich ein Fieldmatch-Beispiel.

-2

Ich hoffe, Sie speichern das Bestätigungskennwort auch nicht in der Datenbank. Sie haben keine Standardvalidierungen dafür, aber stattdessen müssen Sie benutzerdefinierte Annotation verwenden, die auch ziemlich geradlinig ist.

+0

verwendete ich den Tag überwintern, weil es ‚wasn t ein Hibernate-Validator-Tag und ich kann noch keine neuen erstellen. Natürlich sichere ich das Bestätigungsfeld nicht. – jack

-1

Hibernate ist ein ORM Mapper.

Er wird verwendet, um Daten in einem DB zu persistieren und wieder zu extrahieren. Daher macht es wenig Sinn, 2 Felder mit einem identischen Wert zu haben (aus Persistenzsicht). Das sollten Sie in Ihrer Geschäftslogik überprüfen.

Und ich bin mit Junesh ... Behalten Sie nicht Ihre Passwörter in einem abrufbaren Format ... Nachschlagen Hasting und Salting - Oder noch besser, denken Sie an OpenID, so dass Sie Ihre Kunden mit einem weiteren dummen Passwort nicht stören müssen. ..

+0

Ich habe den Hibernate-Tag verwendet, weil es kein Hibernate-Validator-Tag gab und ich noch keine neuen erstellen kann. Natürlich sichere ich das Bestätigungsfeld nicht. – jack

3

Wenn Sie mit Spring Framework, dann können Sie Frühlings-Expression Language (Spel) dafür. Ich habe eine kleine Bibliothek geschrieben, die einen JSR-303-Validator auf der Basis von SpEL bietet, der Feldvalidierungen sehr einfach macht. Werfen Sie einen Blick auf https://github.com/jirutka/validator-spring.

Dies überprüft die Gleichheit der Passwortfelder, wenn mindestens eines von ihnen nicht leer ist.

@SpELAssert(value = "password.equals(passwordVerify)", 
      applyIf = "password || passwordVerify", 
      message = "{validator.passwords_not_same}") 
public class User { 

    private String password; 
    private String passwordVerify; 
}