2011-10-17 1 views
4

ConstraintValidator에서 validator.valid의 메시지를 반환하려면 몇 가지 방법 (foreach 이외에도 foreach가 충분할 수 있습니다)이 있습니까?Validator.validate에서 ConstraintValidatorContext로 ConstraintViolation을 병합

간단한 예를

@TestFormConstraint 
public class TestForm { 

    @NotEmpty 
    String foo; 

    boolean checkBar = false; 

    @NotEmpty(groups=CheckBarGroup.class) 
    String bar; 

    //getters & setters ... 
} 
public class TestFormValidator 
     implements ConstraintValidator<TestFormConstraint, TestForm> { 

    @Autowired 
    private Validator validator; 

    @Override 
    public void initialize(ValidTestForm constraintAnnotation) {} 

    @Override 
    public boolean isValid(TestForm form, ConstraintValidatorContext context) { 
     if(form.isCheckBar()){ 
      Set<ConstraintViolation<TestForm>> con = 
        validator.validate(form, CheckBarGroup.class); 
      if(!con.isEmpty()){ 
       //ok, so what to do here? iterate over con and for each msg 
       //call context.buildConstraintViolationWithTemplate ? 
       return false; 
      } 
     } 
     return true; 
    } 

} 

어떤 생각을 (예, 나는 조건 검증을 할 노력하고있어)?

답변

0

이러한 경우 그룹을 사용할 수 있습니다. 따라서 checkBar 필드를 제거하고 CheckBarGroup을 지정하거나 지정하지 마십시오.

validator.validate(testForm) 또는 validator.validate(testForm, CheckBarGroup.class, Default.class)

같은