2013-05-10 2 views
1

jsr303을 사용하여 사용자 입력의 유효성을 검사합니다. 클래스의 모든 속성에 주석을 기본적으로 두는 방법이 있는지 궁금합니다. 나는 기본적으로 문자열을 반환하는 모든 속성에서이 유효성 검사를 설정할 수 있습니다 경우 모든 속성의 기본 주석 jsr303

public String getName(); 

public String getAddress(); 

public String getEmployerName(); 

public String getEmployerAddress(); 

예를

를 들어

지금 대신 @ NOTNULL/@ NotBlank로 모든 주석, 나는 방법을 찾고 있었다. 이처럼 뭔가를 찾고있는 유일한 이유는,이 애노테이션을 모든 속성에 넣고 버그를 여는 것을 잊어 버리는 것이 더 쉽다고 생각합니다.

정말 감사드립니다.

답변

1

나는 이것에 대한 즉시 사용 가능한 솔루션을하지 알고 있어요,하지만 당신은이 목적을 위해 programmatic constraint declaration에 대한 최대 절전 모드 검사기의 API를 사용할 수 있습니다 반사 를 사용하는 모든 필드/String 형의 게터를 결정

  • 각 필드/게터에 대해 API를 통해 필요한 제약 조건을 추가합니다.

예 다음과 같이 필드의 경우 :

List<Field> stringFields = ...; 

HibernateValidatorConfiguration configuration = Validation 
     .byProvider(HibernateValidator.class) 
     .configure(); 

ConstraintMapping constraintMapping = configuration.createConstraintMapping(); 

for(Field field : stringFields) { 
    constraintMapping 
     .type(MyBean.class) 
     .property(field.getName(), FIELD) 
      .constraint(new NotNullDef()) 
      .constraint(new NotBlankDef()); 
} 

Validator validator = configuration.addMapping(constraintMapping) 
     .buildValidatorFactory() 
     .getValidator();  
+0

죄송합니다. 멋지게 작동합니다. –

관련 문제