2017-09-14 6 views
0

春ブーツカスタムフィールド検証

  • メールのチェックインは、データベースに存在します。
  • ユーザー名のチェックインがデータベースに存在します。
  • パスワード確認が正しく入力されているかどうかを確認してください。

私は検証のためにクラスを使用しています。例:

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; 
} 

これまでこれはすべて正常に動作しています。
しかし、今私はパスワードの検証(2つのパスワードの一致を確認する)を構築したい。私はこれを一度だけ使用しますので、このためにAnnotation全体を作成する必要はないと思います。
注釈を使用せずにこれを行うにはどうすればよいですか。私はそれが来た

解決策は、私が欲しいものを閉じてパスワードを検証する方法に@AssertTrueを使用することです:

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

これは動作しますが、それがフィールドにリンクされていないが、それはグローバルですエラー。
したがって、Passwords don't matchエラーがどのフィールドに属するのかわかりません。 フィールドにcheckPasswords検証をリンクする方法はありますか?

+1

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

+1

@StanislavLこのリンクは7歳で、古い方法の検証について話しています。作者は 'bean-validation'タグを入れ、JSR-303アノテーションを使用していることに注意してください。 –

答えて

1

これは機能しますが、フィールドにリンクされていませんが、グローバルエラーです。

はい、オブジェクト全体で作業しているため、グローバルなエラーです。

注釈を使用せずにこれを行うにはどうすればよいですか。

私はそのような方法を知らない。あなたはそれを達成するために独自のバリデータを書く必要があります。

+0

ありがとう私は自分自身を書いています:https://github.com/jwz104/validationそれは仕上げから遠いですが、ベースはそこにあります。 –

+0

私は数年前に自分自身も書きました:[FieldsMatchValidator](https://github.com/php-coder/mystamps/blob/581412f565c71ecc482da5542e7ff77fe6a91a7f/src/main/java/ru/mystamps/web/support/beanvalidation/FieldsMatchValidator .java)と[UniqueLoginValidator](https://github.com/php-coder/mystamps/blob/581412f565c71ecc482da5542e7ff77fe6a91a7f/src/main/java/ru/mystamps/web/support/beanvalidation/UniqueLoginValidator.java) –

関連する問題