自定义数据校验的步骤

整体思路

  • 创建一个自定义的数据校验注解
  • 创建一个自定义的数据校验器
  • 关联数据校验注解和数据校验器

1.创建自定义数据校验注解

思路:

1.引荐validation自带的@NotBlank注解。做出下面的自定义注解代码

  • @Constraint: 绑定数据校验器,可绑定多个。
@Documented
@Constraint(validatedBy = {ListValueConstraintValidator.class})
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
public @interface ListVals {
    
    // 默认的返回信息。也可以用message标签来自定义返回信息。
    // "{com.xue.common.valid.ListVals.message}"这个的意思是在该服务的配置文件中找这一途径的message属性
    String message() default "{com.xue.common.valid.ListVals.message}";

    // 分组
    Class<?>[] groups() default { };

    //负载
    Class<? extends Payload>[] payload() default { };
	// 定义了一个int数组,默认为空
    int[] vals() default {};
}

2.创建一个自定义的数据校验器

在notBlank注解里面的@Constraint注解中我们发现,

validateBy 后面所跟的类需要是继承了ConstraintValidator。而ConstraintValidator是一个接口

所以我们要写自定义的数据校验器就需要实现这个接口

自定义数据校验的步骤

自定义数据校验的步骤

自定义数据校验的步骤

注意

  • ConstraintValidator<ListVals,Integer>,第一个是一个注解,第二个是数据的类型。根据自己想要遍历的注解中的某些值,进行改变
  • initialize()方法:只是将使用这个注解的其中的 值遍历到集合中
  • isValid()方法:传入被校验字段的值,和set中的值进行比对
public class ListValueConstraintValidator implements ConstraintValidator<ListVals,Integer> {
    //创建一个set集合,用于放置注解中设置的默认值
    HashSet<Integer> set = new HashSet<>();
    @Override
    public void initialize(ListVals constraintAnnotation) {
        //1.获取到 注解ListVals中设置的值,并放入set集合中
        int[] vals = constraintAnnotation.vals();

        // 遍历注解中的值,并放入set集合
        for (int val : vals) {
            set.add(val);
        }

    }

    // value:待校验的值
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext context) {

        return set.contains(value);
    }
}

3.关联数据校验注解和数据校验器

通过数据校验注解的@Constraint注解 绑定。

自定义数据校验的步骤

自定义数据校验的步骤

上一篇:Vue路由(vue-router)


下一篇:解决Zabbix 5.0中文乱码问题