• SpringBoot自定义validation验证


    注解类

    import javax.validation.Constraint;
    import javax.validation.Payload;
    import java.lang.annotation.Documented;
    import java.lang.annotation.Retention;
    import java.lang.annotation.Target;
    
    import static java.lang.annotation.ElementType.*;
    import static java.lang.annotation.RetentionPolicy.RUNTIME;
    
    @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
    @Retention(RUNTIME)
    @Documented
    @Constraint(validatedBy = StringLengthValidator.class)
    public @interface StringLength {
    
        // 必须加
        String message() default "{javax.validation.constraints.NotNull.message}";
    
        // 必须加
        Class<?>[] groups() default {};
    
        // 必须加
        Class<? extends Payload>[] payload() default {};
    
        int minLength() default 0;
    
        int maxLength() default 16;
    }

    验证实现类

    import javax.validation.ConstraintValidator;
    import javax.validation.ConstraintValidatorContext;
    import java.util.Objects;
    
    public class StringLengthValidator implements ConstraintValidator<StringLength, Object> {
    
        private StringLength stringLength;
    
        @Override
        public void initialize(StringLength constraintAnnotation) {
            this.stringLength = constraintAnnotation;
        }
    
        @Override
        public boolean isValid(Object value, ConstraintValidatorContext context) {
            if (Objects.isNull(value)) {
                return true;
            }
            if (null != stringLength) {
                int length = String.valueOf(value).length();
                int maxLen = stringLength.maxLength(),
                        minLen = stringLength.minLength();
                return length >= minLen && length <= maxLen;
            }
            return false;
        }
    }
  • 相关阅读:
    虚拟机安装CentOS不能联网的解决
    64位openSUSE12.3最完整的安装QQ的方法
    打水井
    一个阶乘中末尾零的个数
    DiscuzX开发手册【精品】
    一个获取PHP消耗时间的小函数
    php获取本月的第一天与最后一天
    在博客园创建了一个自己的博客~
    ie6 fixed 很纠结~这个js就解决了
    现在各个网站都在使用瀑布流布局吧~
  • 原文地址:https://www.cnblogs.com/se7end/p/14122830.html
Copyright © 2020-2023  润新知