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