>

그룹마다 다른 제약 조건을 가진 @ Size.List를 사용하여 사용자 지정 주석을 만들었습니다.

이를 사용하여 변수의 유효성을 검사 할 때 선택한 그룹에 대한 제약 조건 대신 두 제약 조건이 모두 사용됩니다.

그룹화되지 않은 주석은 정상적으로 작동합니다 코드 예 :

@Size.List({
    @Size(max = 1, groups = Group1.class),
    @Size(max = 2, groups = Group2.class) })�@OtherAnnotationsThatWork
public @interface FooAnnotation {
    String message() default “Bar”;
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default{};
}
public Class Bar{
    public Bar(String foo){ Foo = foo; }
    //doesn’t work
    @FooAnnotation
    private Foo;
    //getters and setters 
}
@Test
Private barTest(){
    Bar bar1 = new Bar(“a”);
    Validate(bar1, group1.class);
    Bar bar2 = new Bar(“bb”);
    //fails because size is greater than max of 1
    Validate(bar2, group2.class) 
}

또한 다음 코드가 작동하기 때문에 @ Size.List 또는 내 그룹이 잘못 설정되어있는 것이 아니라는 것을 알고 있습니다.

@OtherAnnotationsThatWork
public @interface FooAnnotation {
    String message() default “Bar”
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default{};
}
public Class Bar{
    public Bar(String foo){ Foo = foo; }
    @Size.List({
        @Size(max = 1, groups = Group1.class),
        @Size(max = 2, groups = Group2.class) })
    @FooAnnotation
    private Foo;
    //getters and setters 
}
@Test
Private barTest(){
    Bar bar1 = new Bar(“a”);
    Validate(bar1, group1.class);
    Bar bar2 = new Bar(“bb”);
    Validate(bar2, group2.class) //passes
}

질문입니다. 맞춤 주석 내에서 그룹을 작동시키는 방법

  • 답변 # 1

    Bean Validation spec (섹션 3.3, 제약 조건 구성)에 따라 작성 제약 조건 (예 : @Size )에 대한 그룹  예제의 제약 조건)은 다음과 같이 고려되지 않습니다.

    와이즈 비즈

    즉 두 번째 예는 갈 길입니다.

    이 규칙의 근거는 제약 조건 정의 자체가 그룹 멤버십을 정의하지 않는다는 점에서 일관성이 있어야합니다 (이러한 작성 제약 조건은 제약 조건 정의의 일부입니다).

    Groups from the main constraint annotation are inherited by the composing annotations. Any groups definition on a composing annotation is ignored.

관련 자료

  • 이전 파일 이름의 초기 부분을 기준으로 Excel 파일을 이동하는 Powershell
  • 다음 codenameone - 코드 명 하나 - 트위터와 야후와의 소셜 로그인