лучшие практики валидации - PullRequest
4 голосов
/ 30 декабря 2010

Я изучаю Spring MVC 2.5 в основном из документации.Может ли кто-нибудь объяснить следующее:

  • Преимущества / различия использования command объектов по сравнению с использованием @ModelAttribute для передачи объекта.
  • Существует ли более простой способ проверки другихзатем писать объект Validator?

Кроме того, как в этом коде работает строка ValidationUtils.rejectIfEmpty(e, "name", "name.empty");?Как он может проверить, является ли имя пустым в объекте person , если объект person не был передан?

   public void validate(Object obj, Errors e) {
        ValidationUtils.rejectIfEmpty(e, "name", "name.empty");
        Person p = (Person) obj;
        if (p.getAge() < 0) {
            e.rejectValue("age", "negativevalue");
        } else if (p.getAge() > 110) {
            e.rejectValue("age", "too.darn.old");
        }
    }

(этот код взят из раздела 5.2 из документации)

Спасибо

Ответы [ 2 ]

3 голосов
/ 30 декабря 2010
  • Вопрос об объекте команды не очень понятен.Если вы имеете в виду следующий синтаксис

    @RequestMapping(...) public ModelAndView foo(Command c) { ... }
    

    , то он такой же, как следующий

    @RequestMapping(...) public ModelAndView foo(@ModelAttribute Command c) { ... }
    

    , поскольку @ModelAttribute можно опустить.Единственный случай, когда это действительно необходимо, это то, что вам нужно явно указать имя атрибута (в противном случае оно будет выведено в виде имени класса с декапитализированной первой буквой, то есть command)

  • ВВесна 2,5 - нет.В Spring 3.0 вы можете использовать декларативную проверку с API-интерфейсом проверки bean-компонентов JSR-303.

  • Объект Errors имеет ссылку на проверяемый объект.

1 голос
/ 30 декабря 2010

Вот ответ на ваш первый вопрос. http://chompingatbits.com/2009/08/25/spring-formtag-commandname-vs-modelattribute/

Согласно моему опыту, нет более простого способа полной проверки, потому что это достаточно просто. Вы можете упростить интеграцию библиотек, таких как commons-validator, в свой проект и использовать предопределенные правила проверки в своих формах.

http://numberformat.wordpress.com/tag/spring-mvc-validation/

, а также с 3-й версией Spring вы можете использовать проверку Bean с использованием аннотаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...