我试图理解以下代码中BeanPropertyBindingResult
的作用。不幸的是,javadoc毫无用处。
请查看以下代码:
BeanPropertyBindingResult errors = new BeanPropertyBindingResult(item, "item");
validator.validate(item, errors);
我的问题是:
据我所知,BeanPropertyBindingResult
基本上是某种Map
,可以包含(字段名称,错误文本)的键/值对。这是正确的,还是事实更复杂?
当我创建一个新的BeanPropertyBindingResult
时,为什么我需要提供它(作为构造函数的第一个参数)和我要验证的对象?据我所知,在上面的第二行中,validator.validate(item, errors);
验证器无论如何都得到了对象..为什么要这样做两次呢?
javadoc说明了构造函数的第二个参数:
是的,但为什么我需要这个名字?我应该/能够用它做什么......?objectName - 目标对象的名称
答案 0 :(得分:1)
1)是的,这也是我的理解,即使它在技术上是一个列表。 - 最重要的部分是超级List<ObjectError> errors
中定义的AbstractBindingResult
。
2)因为BindingResult
接口需要它。 - 我知道这不是一个好的答案,但如果这个接口需要这个方法,那么实现它就没有其它方法顺便说一下:我想我在Autor使用之前已经看过一些例子{{ 1}}对于该字段,但如果它正常工作,我不是100%,但大多数代码接缝能够处理空值。
3)如果您在jsp中使用该绑定结果来显示不同输入字段的错误消息,那么它必须与模型属性名称匹配。
假设您有一个带有字段null
的命令对象。以及输入字段与name
关联的JSP页面。然后,您需要将名称myCommand.name
作为绑定错误的某种前缀。 - 很难解释,我希望你明白我的意思