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

我在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) {

...

}

回答:

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

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

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

有了这个抽象之后,您可以通过验证方法传入绑定结果:

validator.validate(obj, bindingResult);

以上是 将JSR-303验证错误转换为Spring的BindingResult 的全部内容, 来源链接: utcz.com/qa/397628.html

回到顶部