2012-03-13 2 views
1

전체 그래프의 유효성을 자동으로 검사 할 수 있습니까? 전체 그래프를 보면 유효성 검사 대상의 객체와 콩인 필드를 모두 의미합니다.JSR 303 : 그래프 전체를 자동으로 검증 할 수 있습니까?

아니면 아래와 같이 수동으로 트래버스해야합니까?

현재 나는 당신이 @Valid 및 주요 개체의 유효성을 검사 할 때, 그것은 또한 필드의 타당성을 검증하여 검증하려는 필드에 주석을 달 수있는이

Set<ConstraintViolation<OrderProxy>> violationsOrder = 
     validator.validate(order, Default.class, ClientGroup.class); 
    Set<ConstraintViolation<OrganizationProxy>> violationsOrg = 
     validator.validate(order.getSender(), Default.class, ClientGroup.class); 
    Set<ConstraintViolation<PersonProxy>> violationsPerson = 
     validator.validate(order.getSender().getPerson(), 
           Default.class, ClientGroup.class); 

답변

6

그런 짓을.

이 예를 들어 작동합니다

public class Order 
    @Valid 
    protected Header header; 
    @Valid 
    protected List<Detail> details; 
} 

당신은 (또한 필드들)을

Set<ConstraintViolation<Order>> violationsOrder = validator.validate(order, Default.class, ClientGroup.class); 

모든 위반을 얻기 위해 전화를해야합니다. 그런 다음 필요한 경우 정확한 유효성 검사 소스를 얻기 위해 getPropertyPath()을 사용하여 원인을 구문 분석해야합니다.

javax.validation.Path rp = violation.getPropertyPath(); 
+0

나는 그 클래스들을 validate 메소드로 넘겨서는 안된다고 생각합니다. 이러한 매개 변수는 유효성 검사 그룹을 지정하기위한 것입니다 : http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#example-drive-away 유효성 검사 프레임 워크는 표시된 모든 특성 기본적으로 @Valid입니다. –

관련 문제