📅  最后修改于: 2023-12-03 15:13:38.552000             🧑  作者: Mango
在 Spring MVC 中,我们通常会使用 BindingResult
来接收表单提交的数据,并进行数据校验。而 BindingResult
和普通的目标对象(即被绑定的 JavaBean)有什么区别呢?
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
不同,普通目标对象就是我们要绑定数据的 JavaBean。当我们使用 @ModelAttribute
绑定表单数据时,目标对象就是我们在方法参数中定义的那个 JavaBean 对象。
BindingResult
就像是一个容器,用于存储校验错误信息。而普通目标对象则是我们要绑定数据的对象,它的属性与表单中的字段一一对应。
虽然 BindingResult
和普通目标对象都是在 Spring MVC 中用来处理表单数据的,但是它们有很大的区别。BindingResult
是一个接口,用于存储校验错误信息。普通目标对象则是我们要绑定数据的 JavaBean,它的属性与表单中的字段一一对应。我们需要理解它们的不同,才能更好地处理表单提交的数据。