1. 程式人生 > >自定義validate註解校驗

自定義validate註解校驗

  1. /**
     * @author yangyh
     * @since 2018/10/18
     */
    @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
    @Retention(RUNTIME)
    @Documented
    @Constraint(validatedBy = ListStringLength.ListStringLengthValidator4List.class)
    public @interface ListStringLength {
    
        String message() default "{org.hibernate.validator.constraints.Length.message}";
    
        Class<?>[] groups() default {};
    
        Class<? extends Payload>[] payload() default {};
    
        /**
         * @return size the element must be higher or equal to
         */
        int min() default 0;
    
        /**
         * @return size the element must be lower or equal to
         */
        int max() default Integer.MAX_VALUE;
    
        /**
         * Defines several {@link ListStringLength} annotations on the same element.
         *
         * @see ListStringLength
         */
        @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
        @Retention(RUNTIME)
        @Documented
        @interface List {
    
            ListStringLength[] value();
        }
    
        class ListStringLengthValidator4List
                implements ConstraintValidator<ListStringLength, java.util.List<String>> {
    
            private int min;
            private int max;
    
            @Override
            public void initialize(ListStringLength constraintAnnotation) {
    
                min = constraintAnnotation.min();
                max = constraintAnnotation.max();
            }
    
            @Override
            public boolean isValid(java.util.List<String> value, ConstraintValidatorContext context) {
                if (null != value && value.size() > 0) {
                    for (String s : value) {
                        if (s.length() < min || s.length() > max) {
                            return false;
                        }
                    }
                }
                return true;
            }
        }
    }

    遇到的坑:@Constraint這個指向的類必須是自己寫的類,我沒有指向,導致一直報錯,沒有驗證的類