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