📜  bean 名称 spring mvc 的 bindingresult 和普通目标对象都不是 - Java (1)

📅  最后修改于: 2023-12-03 15:13:38.552000             🧑  作者: Mango

Bean 名称 spring mvc 的 BindingResult 和普通目标对象都不是 - Java

在 Spring MVC 中,我们通常会使用 BindingResult 来接收表单提交的数据,并进行数据校验。而 BindingResult 和普通的目标对象(即被绑定的 JavaBean)有什么区别呢?

BindingResult 是什么?

BindingResult 是 Spring MVC 中的一个接口,用于封装数据绑定的结果。当我们使用 @ModelAttribute 将表单数据绑定到 JavaBean 中时,如果数据校验失败,BindingResult 中就会存储错误信息。

以下是一个简单的例子:

@PostMapping("/test")
public String test(@ModelAttribute("user") User user, BindingResult result) {
    if (result.hasErrors()) {
        // 处理校验失败的情况
    }
    // 处理正常的情况
    return "success";
}

在上面的代码中,User 类是一个 JavaBean,它的属性与表单中的字段一一对应。在方法参数中,我们使用 @ModelAttribute("user") 将表单数据绑定到 user 对象中。如果数据校验失败,错误信息就会保存在 BindingResult 中,我们可以在 if (result.hasErrors()) {...} 中处理这些错误信息。

BindingResult 和普通目标对象的区别

虽然我们通常会把校验的结果存储到 BindingResult 中,但是 BindingResult 并不是目标对象。它是一个包含校验错误信息的对象,而不是我们绑定数据的目标对象。

BindingResult 不同,普通目标对象就是我们要绑定数据的 JavaBean。当我们使用 @ModelAttribute 绑定表单数据时,目标对象就是我们在方法参数中定义的那个 JavaBean 对象。

BindingResult 就像是一个容器,用于存储校验错误信息。而普通目标对象则是我们要绑定数据的对象,它的属性与表单中的字段一一对应。

总结

虽然 BindingResult 和普通目标对象都是在 Spring MVC 中用来处理表单数据的,但是它们有很大的区别。BindingResult 是一个接口,用于存储校验错误信息。普通目标对象则是我们要绑定数据的 JavaBean,它的属性与表单中的字段一一对应。我们需要理解它们的不同,才能更好地处理表单提交的数据。