学习笔记
Validator
@Max(10) 最大不能超过10
@Max(value=10,message=”数据最大不能超过10”) 最大不能超过10
@Min()
@Range(min=1,max=10) 范围 1-10
@Length(min=2,max=10)输入的长度 最小为2,最大为10
需要建一个注解类和关联类
1.@Target(ElementType.TYPE)
表示使用在哪儿,用在哪儿目标上
ElementType.TYPE 表示使用在类上
ElementType.METHOD表示使用在方法上
ElementType.FIELD表示可以使用在字段上
2.@Documented()
表示让注释加入到文档之中
3.@Retention()让注解保留到什么阶段
RetentionPolicy.RUNTIME在运行阶段
4.@Constraint(validatedBy = XXX.class) //关联类
/**
* @program: missyou
* @description: 自定义校验注解
* @author:
* @create: 2020-09-19 15:38
* @Target 表示使用在哪儿,用在哪儿目标上
* @Documented 让注释加入文档
* @Retention 这些注解保留到什么阶段
**/
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE,ElementType.FIELD})
@Constraint(validatedBy = PasswordValidator.class)//关联类
public @interface PasswordEqual {
int min() default 4;
int max() default 11;
String message() default "两次密码不一致";
//规范模板
Class<?> [] groups() default {};
Class<? extends Payload> [] payload() default {};
//关联类
}
2.关联类
关联类必须要实现
ConstraintValidator<自定义注解类,自定义注解修饰的目标类>
/**
* @program: missyou
* @description: 自定义校验密码 关联类
* @author:
* @create: 2020-09-19 15:48
**/
public class PasswordValidator implements ConstraintValidator<PasswordEqual, PersonDTO> {
//两个参数
// 1.自定义注解的类型
//2.自定义注解修饰的目标的类型,例如:修饰属性,如name,PersonDTO更换String
private int min;
private int max;
@Override
public void initialize(PasswordEqual constraintAnnotation) {
//获取注解中的值
this.min = constraintAnnotation.min();
this.max = constraintAnnotation.max();
}
@Override
public boolean isValid(PersonDTO personDTO, ConstraintValidatorContext constraintValidatorContext) {
String password1 = personDTO.getPassword1();
String password2 = personDTO.getPassword2();
boolean match = password1.equals(password2) && password1.length()>min && password1.length() <max;
return match;
}
}