春季验证-BindingResult

rap*_*apt 5 validation spring spring-mvc

我试图了解BeanPropertyBindingResult以下代码中的内容。不幸的是,javadoc毫无用处。

请看下面的代码:

BeanPropertyBindingResult errors = new BeanPropertyBindingResult(item, "item");
validator.validate(item, errors);
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 据我所知,BeanPropertyBindingResult基本上是一种Map可以包含键/值对(字段名,错误文本)的。这是正确的,还是事实更加复杂?

  2. 当我创建一个new时BeanPropertyBindingResult,为什么需要为我要验证的对象提供它(作为构造函数的第一个参数)?据我所见,在上面的第二行中,validator.validate(item, errors);验证器还是会获得对象..那么为什么要两次呢?

  3. Javadoc讲述了构造函数的第二个参数:

objectName-目标对象的名称

是的,但是为什么我需要这个名字?我应该/可以做什么...?

Ral*_*lph 2

1)是的,这也是我的理解,即使它在技术上是一个列表。- 最重要的部分是List<ObjectError> errors在超类中定义的AbstractBindingResult

2)因为这是接口要求的BindingResult。--我知道这不是一个好的答案,但是如果这个接口需要那个方法,那么就没有其他方法来实现它顺便说一句:我想我之前见过一些 Autor 用于null该字段的示例,但我不是 100 % 如果它工作正确,但大多数代码接缝都能够处理空值。

3) 如果您在 jsp 中使用该绑定结果来显示不同输入字段的错误消息,则它必须与模型属性名称匹配。

假设您有一个带有 field 的命令对象name。以及一个 JSP 页面,其中输入字段与myCommand.name. 然后您需要该名称myCommand作为绑定错误的某种前缀。--很难解释,希望你明白我的意思