gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:50:09 24 4
gpt4 key购买 nike

我在 Spring Controller 中有以下代码:

@Autowired
private javax.validation.Validator validator;

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

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

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

我知道可以用 @Valid 注释 CustomForm 参数并让 Spring 注入(inject) 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 来获取 validator :

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

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

有了这个抽象,你可以这样使用 validator ,传入你的 bindingResult:

validator.validate(obj, bindingResult);

关于java - 将 JSR-303 验证错误转换为 Spring 的 BindingResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14893176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com