解决验证注解随机问题

如  password是自定义注解

@Data
public class Text {
    @NotBlank
    @Password(type = "1",message = "不存在")
    private String text;
}

注解判断是随机顺序的,不是按照顺序来判断。传进来的text随机进@NoBlank和@Password。然后再进另一个。

如果这个时候text为空。我们想要的判断是text进@NotBlank注解。然后返回text不能为空。

要是Text先进入Password了、那么就会进password进行判断、那么返回值就不会是text不能为空。

所以我们在Password中加入判断、判断传进来的值是否为空、如果不为空在进行判断、如果为空直接返回true、进入@NotBlank注解进行判断保证返回值每次都一样。

public class PasswordValidator implements ConstraintValidator<Password, Object> {

    private String type;
    @Override
    public void initialize(Password constraintAnnotation) {
        type = constraintAnnotation.type();
    }

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
     if(value == null){
       return true; // 进行判断如果为空直接返回true,进入@NotBlank注解中、这样每次传入的返回值就能保证一样了。
     }
switch (type){ case "1": if(value.equals("123")){ return true; } return false; case"2": System.out.println(456); return true;        default: System.out.println("谢谢"); true; } return true; } }

 

posted @ 2020-10-18 20:27  小小小小丑。  阅读(131)  评论(0编辑  收藏  举报