如何在拥有多个(自定义)验证器时使用MethodValidationPostProcessor?

时间:2014-12-01 06:37:59

标签: spring spring-mvc spring-validator

在我的一个Spring应用程序中,我计划使用MethodValidationPostProcessor来验证服务方法参数。据我所知,为此,我必须在ApplicationContext中有一个MethodValidationPostProcessor对象,而后者必须注入一个validator。我在@Configuration课程中这样做:

@Bean
public LocalValidatorFactoryBean validator() {
    return new LocalValidatorFactoryBean();
}

@Bean
public MethodValidationPostProcessor getMethodValidationPostProcessor(){
    MethodValidationPostProcessor processor = new MethodValidationPostProcessor();
    processor.setValidator(validator());
    return processor;
}

然后,我的服务类看起来像这样:

@Service
@Validated
public class SomeService {

    public void someMethod(@Valid SomeForm someForm) {
        .
        .
        .
    }

}

但是,我的一些对象需要一些自定义验证器。例如,对于注册表单,我计划使用 JoinDataValidator 扩展LocalValidatorFactoryBean,如下所示:

@Service("joinDataValidator")
public class JoinDataValidator extends LocalValidatorFactoryBean {

    @Override
    public void validate(final Object target, final Errors errors) {
      super.validate(target, errors);
      // check for duplicate email
    }

    @Override
    public boolean supports(Class<?> clazz) {
      return JoinForm.class.equals(clazz);
    }

}

因此,对于不同的服务类,我需要多个验证器。我无法弄清楚如何告诉配置的MethodValidationPostProcessor使用不同的验证器,具体取决于要验证的Service类,或者什么是处理这种场景的好方法。我很感激帮助。

更新:创建了一张票证:https://jira.spring.io/browse/SPR-12563

0 个答案:

没有答案