2012-01-25 3 views
3

Я пытаюсь понять, что делает BeanPropertyBindingResult в следующем коде. К сожалению, javadoc совершенно бесполезен.Spring Validation - BindingResult

Пожалуйста, обратите внимание на следующий код:

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

Мои вопросы:

  1. Насколько я могу видеть, BeanPropertyBindingResult в основном своего рода Map, который может содержать ключ/value (имя поля, текст ошибки). Это правильно, или правда более сложна?

  2. Когда я создаю новый BeanPropertyBindingResult, зачем мне его предоставлять (как первый параметр конструктора) с объектом, который я собираюсь проверить? Насколько я вижу, во второй строке выше validator.validate(item, errors); валидатор получает объект в любом случае .. так зачем делать это дважды?

  3. Javadoc говорит о втором параметре конструктора:

Objectname - имя целевого объекта

да, но зачем мне это имя? Что я должен/мог делать с этим ...?

ответ

0

1) Да, это тоже мое понимание, даже если это технически список. - Самая важная часть - List<ObjectError> errors, определенная в суперклассе AbstractBindingResult.

2) Потому что это требуется интерфейсом BindingResult. - Я знаю, что это нехороший ответ, но если для этого интерфейса требуется этот метод, тогда он не будет реализовывать его. BTW: Я думаю, что я видел пример до того, где Autor использовал null для этого поля, но я я не 100%, если он работает правильно, но большинство швов кода могут обрабатывать нулевое значение.

3) Если вы используете этот результат привязки, например, в jsp, чтобы отображать сообщения об ошибках для разных полей ввода, это должно соответствовать имени атрибута модели.

Предположим, у вас есть объект команды с полем name. И страница JSP, где входной файл связан с myCommand.name. Тогда вам нужно имя myCommand как некоторый префикс для ошибок привязки. - Трудно объяснить, я надеюсь, вы понимаете, что я имею в виду

Смежные вопросы