Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 当有多个(自定义)验证器时,如何使用MethodValidationPostProcessor?_Spring_Spring Mvc_Spring Validator - Fatal编程技术网

Spring 当有多个(自定义)验证器时,如何使用MethodValidationPostProcessor?

Spring 当有多个(自定义)验证器时,如何使用MethodValidationPostProcessor?,spring,spring-mvc,spring-validator,Spring,Spring Mvc,Spring Validator,在我的一个Spring应用程序中,我计划使用MethodValidationPostProcessor来验证服务方法参数。正如我所知,为此,我必须在ApplicationContext中有一个MethodValidationPostProcessor对象,而这反过来又必须有一个validator注入。我在@配置中这样做类: @Bean public LocalValidatorFactoryBean validator() { return new LocalValidatorFacto

在我的一个Spring应用程序中,我计划使用
MethodValidationPostProcessor
来验证服务方法参数。正如我所知,为此,我必须在ApplicationContext中有一个
MethodValidationPostProcessor
对象,而这反过来又必须有一个
validator
注入。我在
@配置中这样做
类:

@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) {
        .
        .
        .
    }

}
@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);
    }

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

@Service
@Validated
public class SomeService {

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

}
@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);
    }

}
@服务(“joinDataValidator”)
公共类JoinDataValidator扩展了LocalValidatorFactoryBean{
@凌驾
公共无效验证(最终对象目标、最终错误){
super.validate(目标、错误);
//检查重复的电子邮件
}
@凌驾
公共布尔支持(类clazz){
返回JoinForm.class.equals(clazz);
}
}
因此,对于不同的服务类,我需要多个验证器。我不知道如何告诉配置的
MethodValidationPostProcessor
根据要验证的服务类使用不同的验证器,或者什么是处理此类场景的好方法。我会很感激你的帮助


更新:创建了一个问题:

最初,我将问题简短地发布出来,希望这将是一个正确的方式,有人可以快速理解这个问题。基本上,问题是“当有多个(自定义)验证器时如何使用@MethodValidationPostProcessor?”随着问题的搁置,我现在已经详细阐述了它。我认为这是一个非常真实的问题,张贴在stackoverflow,并将要求重新打开它。