【问题标题】:Spring Validation - BindingResult春季验证 - BindingResult
【发布时间】:2012-01-25 15:49:44
【问题描述】:

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

请看下面的代码:

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

我的问题是:

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

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

  3. javadoc 中提到了构造函数的第二个参数:

objectName - 目标对象的名称

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

【问题讨论】:

    标签: spring validation spring-mvc


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 2017-01-27
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多