Spring启动自定义字段验证

时间:2017-09-14 13:58:18

标签: java spring spring-boot bean-validation

我正在尝试进行以下验证:

  • 检入数据库中存在的电子邮件。
  • 签入用户名存在于数据库中。
  • 检查是否正确输入了密码确认。

我正在使用一个类进行验证。例如:

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密码是否匹配)。我只会使用这一次,所以我认为没有必要为此创建一个完整的注释 如何在不使用注释的情况下执行此操作。

我找到的解决方案接近我想要的是在验证密码的方法上使用@AssertTrue

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

这有效,但它没有链接到某个字段,但这是一个全局错误 所以我无法找到Passwords don't match错误所属的字段。 有没有办法将checkPasswords验证链接到字段?

1 个答案:

答案 0 :(得分:1)

  

这有效,但它没有链接到某个字段,但它是一个全局错误。

是的,这是一个全局错误,因为您正在使用整个对象。

  

如何在不使用注释的情况下执行此操作。

我不知道这样的方式。你必须编写自己的验证器才能实现这一点。