복붙노트

[SPRING] 값 목록을 확인하는 javax.validation?

SPRING

값 목록을 확인하는 javax.validation?

javax.validation을 사용하여 annotation을 사용하여 이러한 값 (red, blue, green, pink) 만 필요로하는 color라는 string 유형의 변수의 유효성을 검사 할 수 있습니까?

@size (min = 1, max = 25) 및 @notnull을 보았지만이 @In (빨강, 파랑, 녹색, 분홍색)과 같은 것이 있습니다.

mysql에서 사용 된 In-keyword와 다소 비슷합니다.

해결법

  1. ==============================

    1.이 경우 아래의 스 니펫처럼 @Pattern 주석을 사용하는 것이 더 간단 할 것이라고 생각합니다. 대소 문자를 구별하지 않으려면 적절한 플래그를 추가하십시오.

    이 경우 아래의 스 니펫처럼 @Pattern 주석을 사용하는 것이 더 간단 할 것이라고 생각합니다. 대소 문자를 구별하지 않으려면 적절한 플래그를 추가하십시오.

    @Pattern (regexp = "red | blue | green | pink", flags = Pattern.Flag.CASE_INSENSITIVE)

  2. ==============================

    2.사용자 정의 유효성 검사 주석을 만들 수 있습니다. 나는 그것을 여기에 쓸 것이다 (테스트받지 않은 코드!) :

    사용자 정의 유효성 검사 주석을 만들 수 있습니다. 나는 그것을 여기에 쓸 것이다 (테스트받지 않은 코드!) :

    @Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
    @Retention(RUNTIME)
    @Documented
    @Constraint(validatedBy = InConstraintValidator.class)
    public @interface In
    {
        String message() default "YOURPACKAGE.In.message}";
    
        Class<?>[] groups() default { };
    
        Class<? extends Payload>[] payload() default {};
    
        Object[] values(); // TODO not sure if this is possible, might be restricted to String[]
    }
    
    public class InConstraintValidator implements ConstraintValidator<In, String>
    {
    
        private Object[] values;
    
        public final void initialize(final In annotation)
        {
            values = annotation.values();
        }
    
        public final boolean isValid(final String value, final ConstraintValidatorContext context)
        {
            if (value == null)
            {
                return true;
            }
            return ...; // check if value is in this.values
        }
    
    }
    
  3. ==============================

    3.열거 형을 만들 수 있습니다.

    열거 형을 만들 수 있습니다.

    public enum Colors {
        RED, PINK, YELLOW
    }
    

    그러면 모델에서 다음과 같이 유효성을 검사 할 수 있습니다.

    public class Model {
        @Enumerated(EnumType.STRING)
        private Colors color;
    }
    

    열거 형에 대해 페이로드의 유효성을 검사합니다. @유효한 RestController에서.

  4. from https://stackoverflow.com/questions/4922655/javax-validation-to-validate-list-of-values by cc-by-sa and MIT license