2017-09-14 4 views
0

Ich versuche, die folgenden Validierungen zu machen:Frühling Boot benutzerdefinierte Feldvalidierung

  • in einer E-Mail Überprüfung in der Datenbank vorhanden.
  • in einem Benutzername Überprüfung in der Datenbank vorhanden.
  • prüfen, ob die Passwortbestätigung richtig eingegeben wird.

Ich verwende eine Klasse für die Validierung. Beispiel:

public class RegisterRequest { 

    @NotNull(message = "Please enter an email") 
    @Email(message = "Not a valid email") 
    @JsonProperty("email") 
    public String email; 

    @NotNull(message = "Please enter a name") 
    @JsonProperty("name") 
    public String name; 

    @NotNull(message = "Please enter a password") 
    @JsonProperty("password") 
    public String password; 

    @NotNull 
    @JsonProperty("password_confirmation") 
    public String passwordConfirmation; 
} 

Das ist alles funktioniert gut, bis diese weit.
Aber jetzt möchte ich die Passwort-Validierung einbauen (Überprüfen, ob 2 Passwort übereinstimmt). Ich werde nur dieses eine Mal verwenden, daher ist es unnötig, eine ganze Annotation dafür zu erstellen.
Wie kann ich dies ohne die Verwendung einer Anmerkung tun.

Die Lösung fand ich, dass kommt schließt, was ich will, ist @AssertTrue auf einem Verfahren zu verwenden, dass die Passwörter überprüft:

@AssertTrue("Passwords don't match") 
public boolean checkPasswords() { 
    return this.password.equals(this.passwordConfirmation); 
} 

Dies funktioniert, aber es ist nicht auf ein Feld verbunden, aber es ist ein globale Error.
So kann ich nicht herausfinden, in welchem ​​Bereich der Passwords don't match Fehler gehören. Gibt es eine Möglichkeit, die Validierung mit einem Feld zu verknüpfen?

+1

https://www.mkyong.com/spring-mvc/spring-mvc-password-example/ – StanislavL

+1

@StanislavL dieser Link 7 Jahre alt und über alte Art der Validierung zu sprechen. Beachten Sie, dass der Autor das Bean-validation-Tag und JSR-303-Annotationen verwendet. https://github.com/jwz104/validation Es ist ein langer Weg von Veredelungs-, aber die Basis ist: –

Antwort

1

Dies funktioniert, aber es ist nicht mit einem Feld verknüpft, aber es ist ein globaler Fehler.

Ja, es ist ein globaler Fehler, weil Sie mit einem ganzen Objekt arbeiten.

Wie kann ich dies ohne die Verwendung eines Annotation tun.

Ich kenne solche Wege nicht. Sie müssen Ihren eigenen Validator schreiben, um dies zu erreichen.

+0

Dank habe ich meine eigene geschrieben. –

+0

Ich schrieb vor ein paar Jahren auch meine eigene: [FieldsMatchValidator] (https://github.com/php-coder/mystamps/blob/581412f565c71ecc482da5542e7ff77fe6a91a7f/src/main/java/ru/mystamps/web/support/beanvalidation/FieldsMatchValidator .java-) und [UniqueLoginValidator] (https://github.com/php-coder/mystamps/blob/581412f565c71ecc482da5542e7ff77fe6a91a7f/src/main/java/ru/mystamps/web/support/beanvalidation/UniqueLoginValidator.java) –

Verwandte Themen