2013-04-11 2 views
1

클래스를 생성하고 JSR303 주석을 추가하는 데 com.sun.codemodel을 사용하고 있습니다. 이것은 @ Pattern.List 어노테이션을 추가하고 싶을 때를 제외하고는 정상적으로 작동합니다.CodeModel @ Pattern.List 주석을 추가하는 방법 com.sun.codemodel

field.annotate(Pattern.class).param("regexp", "some_expression"); 

이 현재 무엇을 생성한다 :

@Pattern(regexp = "first_expression", message = "first.Pattern.message") 
@Pattern(regexp = "second_expression", message = "second.Pattern.message") 
@Pattern(regexp = "third_expression", message = "third.Pattern.message") 

이것은 내가

@Pattern.List({ 
    @Pattern(regexp = "first_expression", message = "first.Pattern.message") 
    @Pattern(regexp = "second_expression", message = "second.Pattern.message") 
    @Pattern(regexp = "third_expression", message = "third.Pattern.message") 
}) 

누군가이 작업을 수행하는 방법을 어떤 아이디어를 생성 할 무엇인가?

답변

3

당신이 @PatternList (목록 = {@Pattern ...}) 대신 당신이 paramArray() 방법을 사용해야한다고 가정하면

JDefinedClass testme = codeModel._class("Testme"); 

JAnnotationUse patternListAnnotation = testme.annotate(Pattern.List.class); 
JAnnotationArrayMember list = patternListAnnotation.paramArray("value"); 

list.annotate(Pattern.class).param("regexp", "first_expression").param("message", "first.Pattern.message"); 
list.annotate(Pattern.class).param("regexp", "second_expression").param("message", "second.Pattern.message"); 
list.annotate(Pattern.class).param("regexp", "third_expression").param("message", "third.Pattern.message"); 

을 출력 다음

@Pattern.List({ 
    @Pattern(regexp = "first_expression", message = "first.Pattern.message"), 
    @Pattern(regexp = "second_expression", message = "second.Pattern.message"), 
    @Pattern(regexp = "third_expression", message = "third.Pattern.message") 
}) 
public class Testme { 
} 

이해야 예제 코드에서 암시 된 필드에 대해 동일한 작업을 수행하십시오.

+0

Pattern.List는 Java에서 잘 작동합니다. 제안 된 솔루션이 내 문제를 해결하고 있습니다. 이것이 내가 한 것입니다. JAnnotationArrayMember fieldPatterns = field.annotate (Pattern.List.class) .paramArray ("value"); fieldPatterns.annotate (Pattern.class) .param ("regexp", "first_expression"); fieldPatterns.annotate (Pattern.class) .param ("regexp", "second_expression"); fieldPatterns.annotate (Pattern.class) .param ("regexp", "third_expression"); – user2270781

+0

Pattern 클래스를 공유 하시겠습니까? javax.validation.constraints.Pattern - - javax.validation.constraints.Pattern.List I –

+0

별로 아무것도 패턴과 Pattern.List 인터페이스가 1.0 API가 를 참조 javax.validation에 정의되어 공유 현재 Hibernate 구현을 사용 중이다. – user2270781