Spring验证 - BindingResult

时间:2012-01-25 15:49:44

标签: spring validation spring-mvc

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

请查看以下代码:

BeanPropertyBindingResult errors = new BeanPropertyBindingResult(item, "item");
validator.validate(item, errors);

我的问题是:

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

  2. 当我创建一个新的BeanPropertyBindingResult时,为什么我需要提供它(作为构造函数的第一个参数)和我要验证的对象?据我所知,在上面的第二行中,validator.validate(item, errors);验证器无论如何都得到了对象..为什么要这样做两次呢?

  3. javadoc说明了构造函数的第二个参数:

  4.   

    objectName - 目标对象的名称

    是的,但为什么我需要这个名字?我应该/能够用它做什么......?

1 个答案:

答案 0 :(得分:1)

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

2)因为BindingResult接口需要它。 - 我知道这不是一个好的答案,但如果这个接口需要这个方法,那么实现它就没有其它方法顺便说一下:我想我在Autor使用之前已经看过一些例子{{ 1}}对于该字段,但如果它正常工作,我不是100%,但大多数代码接缝能够处理空值。

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

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