2012-06-26 2 views
1

스프링 어노테이션 기반 폼 유효성 검사 (주로 @NotBlank 및 @Length)가 효과적입니다. 그래서 같은 검증 방법으로 FormBean에 전달 해요 :스프링 어노테이션 기반 폼 유효성 검사

validate(formBean, result); 

내가 하나에서 떨어져 예상대로 확인하는 각종 양식 필드에 부착 된 여러 개의 주석이 있습니다. 양식 빈에서 내 필드의

하나는과 같이 선언 :

private EntriesBean entries; 

이 필드는 분명 보통의 getter 및 setter가있는 콩을 말한다. 이 빈의 필드 몇 개에도 유효성 검사 주석이 첨부되어 있지만 다른 필드와 마찬가지로 validate() 메서드 호출의 일부로 유효성 검사를하지는 않습니다. 이 bean은 validate()를 호출하는 메소드에서 직접 호출하는 것이 아니라 다른 bean에서 참조되는이 bean과 관련이 있습니까?

감사

당신은 당신의 "항목"필드에이 방법을 확인할 수 있습니다

답변

0

에서 최대 절전 모드 검증 캐스케이드에게 검증을 할 것입니다.

result.pushNestedPath("entries"); 
    validator.validate(form.getEntries(), result); 
    result.popNestedPath(); 

좋아요하지 않습니다

나는이 작업을 수행 할 수있는 방법은 pushNestedPath()와 popNestedPath() 그래서 같은 BindingResult 객체의 방법을 사용하는 것을 볼 수있는 매우 긴 문서를 수 읽기 꽤 지저분한 것처럼 보이는 방식으로 작동하지만, 나타나는 것처럼 보입니다.

0

:

@Valid 
private EntriesBean entries; 

이 그 빈 내 자신의 질문에 대답

+0

어떻게 이것을 pushNestedPath 방식과 비교합니까? 그들 중 하나가 다른 것보다 "모범 사례"가 더 많습니까? – csilk

+0

Spring이 그 메소드로 어떻게 검증하는지 확신 할 수 없다. 내가 준 메소드는 HibernateValidator와 함께 사용하는 것이고, 나는 당신과 함께 작동 할 지 확신 할 수 없다. @Valid는 javax.validation 패키지의 표준 주석이므로 이후로는 그렇게 생각합니다. http://docs.jboss.org/hibernate/validator/4.0.1/reference/en/html/validator-usingvalidator.html – gcesarmza

+0

javax 라이브러리에서 @Valid를 사용해 보았지만 시도하지 않았습니다. 중첩 된 bean에 대한 검증 주석을 트리거합니다. Spring을 사용하는 다른 방법으로 작업하는 예제를 찾을 수 없기 때문에 현재 수행중인 방법을 고수했습니다. – csilk