• 自定义校验器注解


    自定义一个注解判断提交的值是否为指定值

    1、定义一个注解

    import javax.validation.Constraint;
    import javax.validation.Payload;
    import java.lang.annotation.*;
    /**
     * @author liulala
     */
    @Documented
    @Constraint(
            validatedBy = {listValueConstraintValidator.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 "只能在指定名称中选择";
    
        Class[] groups() default {};
    
        Class[] payload() default {};
        string[] names() default {};
    }
    

    2、自定义校验器

    import javax.validation.ConstraintValidator;
    import javax.validation.ConstraintValidatorContext;
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * 自定义校验器,继承ConstraintValidator,ListValue为定义的注解名称,String为该注解判断类型 
     */
    public class listValueConstraintValidator implements ConstraintValidator {
    
        private Set set = new HashSet<>();
        //初始化方法,将可以选择的值取出来放到set中
        @Override
        public void initialize(ListValue constraintAnnotation) {
            String[] names= constraintAnnotation.names();
            for(String name:names)
            {
                set.add(val);
            }
        }
        /**
         *
         * @param value 需要校验的值
         * @param constraintValidatorContext
         * @return
         */
    
        @Override
        public boolean isValid(String name, ConstraintValidatorContext constraintValidatorContext) {
            return set.contains(name);
        }
    }

    3、将自定义的注解放在需要属性上

    @ListValue(names={"腾讯","360"})
    private String companyName;
  • 相关阅读:
    架构师之路,从「存储选型」起步
    17. 电话号码的字母组合
    docker centos date syn
    react native中使用Animated实现三张图片动态旋转效果
    Python函数传递参数
    11 医院挂号系统【平台前端搭建与首页】
    python 获取文件夹中的全部文件
    如何使用 Terraform 和 Git 分支有效管理多环境?
    v.$message不弹框的问题
    Linux高性能服务器编程——ch7笔记
  • 原文地址:https://blog.csdn.net/liulala16/article/details/126182670