将JSR-303验证错误转换为Spring的BindingResult
我在Spring控制器中有以下代码:
@Autowiredprivate 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 codeBindingResult bindingResult = BindingResult.fromConstraintViolations(errors);
我现在可以用注释CustomForm
参数,@Valid
并让Spring注入BindingResult
作为另一个方法的参数,但是在我的情况下,这不是一个选择。
// I know this is possible, but doesn't work for mepublic 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