우리 프로젝트에서 우리는 약간 다른 접근 방식을 취했습니다. 우리는 또한 Spring 3.1을 사용하고 있으며 검증과 사용자 정의 유효성 검증을 사용하여 주석이 추가 된 bean이 있습니다. 우리의 접근 방식은 시나리오에 적용될 수도 있고 적용되지 않을 수도 있습니다. Spring 3.1로 이전하기 전에 원래 사용했던 방법을 잘 모르기 때문입니다.
사용자 정의 유효성 검사가 필요한 경우 LocalValidatorFactoryBean을 확장하는 대신 org.springframework.validation.Validator 클래스를 구현합니다. 따라서이 구현은 고유 한 사용자 정의 코드를 실행하고 Spring의 기본 유효성 검사를 호출합니다.이 유효성 검사는 사용자 정의 유효성 검사기에 자동으로 주입되는 bean을 통해 노출됩니다. 여기에 검증 코드 :
@Component("myValidator")
public class MyValidator implements Validator {
@Autowired
private Validator springValidator;
@Override
public boolean supports(Class<?> clazz) {
return MyObject.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object object, Errors errors) {
MyObject myObject = (MyObject) object;
// invoke spring default validator so validation annotations are processed
springValidator.validate(myObject, errors);
// custom validation
....
는 그리고 우리는 다음과 같은 빈은 우리의 스프링 XML 파일에서 선언 한 :
위의 구현
<bean id="springValidator"
class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
, 검증을 호출하는 데 필요한 클래스를 호출하여 그렇게 할 것이다 validator.validate (Object 객체, 오류 오류). 다시 말하자면, 이것은 동일한 유효성 검사 (Object, Errors) 메소드를 사용하고 있는지 확신 할 수 없기 때문에 프로젝트에서 취한 접근법이 자신에게 적용되는지 확신 할 수없는 이유입니다.
어쨌든 도움이되기를 바랍니다.
@valid 주석은 동일한 rt입니까? – shazinltc
우리는 유효성을 검사해야하는 양식 부분을 표시하기 위해 주석을 사용하고 있습니다. 그러나 우리는 우리 자신의 추가 유효성 검사 처리를 추가하려고합니다. 이것이 우리가 LocalValidatorFactoryBean을 서브 클래 싱하는 이유입니다. –
동일한 문제가 있습니다. http://forum.springsource.org/showthread.php?134759-Extending-JSR-303-validation-quot-validate-quot-is-not-invoked-by-Valid-annotation 해결책을 선택 했습니까? –