将JSR-303验证错误转换为Spring的BindingResult

安东·莫谢耶夫(Anton Moiseev):

我在Spring控制器中有以下代码:

@Autowired
private javax.validation.Validator validator;

@RequestMapping(value = "/submit", method = RequestMethod.POST)
public String submitForm(CustomForm form) {
    Set<ConstraintViolation<CustomForm>> errors = validator.validate(vustomForm);
    ...
}

是否可以映射errors到Spring的BindingResult对象而无需手动检查所有错误并将其添加到BindingResult像这样:

// NOTE: this is imaginary code
BindingResult bindingResult = BindingResult.fromConstraintViolations(errors);

我现在可以用注释CustomForm参数,@Valid并让Spring注入BindingResult作为另一个方法的参数,但是在我的情况下,这不是一个选择。

// I know this is possible, but doesn't work for me
public String submitForm(@Valid CustomForm form, BindingResult bindingResult) {
    ...
}
Biju Kunjummen:

一个更简单的方法可能是使用Spring的抽象org.springframework.validation.Validator,您可以通过在上下文中包含以下bean来获得验证器:

<bean id="jsr303Validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean" />

@Autowired @Qualifier("jsr303Validator") Validator validator;

有了这种抽象之后,您就可以以这种方式使用验证器,并传入您的bindingResult:

validator.validate(obj, bindingResult);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章