栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

如何自定义Validator校验器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何自定义Validator校验器

如果需要自定义一个validator ,步骤如下:

1、编写一个自定义的校验注解,例如@ListValue(values={param1,param2...})。其作用是检验参数是否符合传入的参数。其代码如下,需要注意的有:

        1)有些注解存在于validation-api的包中,需要在项目中导入依赖;

        2)message的值参照validator源码中的命名格式,按照包名+注解名+message命名。


   javax.validation
   validation-api
   2.0.1.Final
/自定义校验的过程
@documented
@Constraint(validatedBy = {ListValueConstrainValidator.class})
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE,         
  ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
@Retention(RetentionPolicy.RUNTIME)
public @interface ListValue {
    String message() default "{com.atguigu.common.valid.ListValue.message}";
    Class[] groups() default {};
    Class[] payload() default {};
    int[] vals() default {};
}
 

2、编写一个自定义的校验器,例如ListValueConstrainValidator。其中initialize方法是初始化方法,将需要用到的数据通过constraintAnnotation.values()方法传入,并放在合适的数据结构中。isValid()方法用于检测数据是否合法。

public class ListValueConstrainValidator implements ConstraintValidator {
    
    private Set set = new HashSet<>();
    //初始化方法
    @Override
    public void initialize(ListValue constraintAnnotation) {
        int[] vals = constraintAnnotation.vals();
        for (int val : vals) {
            set.add(val);
        }
    }

    
    @Override
    public boolean isValid(Integer value, ConstraintValidatorContext constraintValidatorContext) {
        return set.contains(value);
    }
}

3、配置ValidationMessages.properties文件,在里面配置上message的信息。

com.atguigu.common.valid.ListValue.message=必须是提交指定值

这里需要注意到是,如果idea没有设置encoding编码格式为UTF-8将会出现乱码,因此应当先调整编码格式,在file->settings->Editor->Code style->File Encodings将所有调成UTF-8,随后重启项目。

4、将注解写到字段上,例如这里设置为0和1,当参数检验到不是0和1时,将会返回“必须是提交指定值”。

@ListValue(vals = {0,1})
private Integer showStatus;

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/488987.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号