English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Роль аннотации @ModelAttribute в Java

Описание проблемы: когда мы используем значения, переданные через форму, если определены свойства name, address, age и т.д., то значения, переданные через форму, включают только эти три свойства, а нам нужны свойства name, pass, address, age и т.д. Таким образом, при отправке формы и присвоении значений会出现 ситуация, когда отсутствующие значения равны null.如下图:

Полученный пароль равен null

Тогда нам нужно использовать аннотацию @ModelAttribute, чтобы решить эту проблему:

Реализация кода приведена ниже:

 @ModelAttribute
 public void getUsers(@RequestParam(value="name",required=false) String name,Map<String, Object> map){
  if(name!=null){
   System.out.println("ВызовModelAttribute");
   //Мокирование объекта, полученного из базы данных.
   User users = new User("cjh","123","[email protected]","China");
   System.out.println("Из базы данных получен объект"+users);
   map.put("user",users);
  }
 }
 @RequestMapping("/getInfo")
 public String getServletAPI(User user) {
  String viewName = "hello";
  System.out.println("Изменение: " + user);
  return viewName;
 }

Метод, модифицированный аннотацией @ModelAttribute, выполняется в этом контроллере независимо от того, вызывается ли любой другой метод.

Порядок выполнения кода:

1. В первую очередь выполняется метод, модифицированный аннотацией @ModelAttribute, находит соответствующий объект для изменения в базе данных, и puts значения в пару ключ-значение, key должен соответствовать имени параметра метода, который обрабатывает запрос, например: здесь определено传入ное значение параметра user, поэтому map.put(“user”, значение (объект, найденный в базе данных)). Этот Map необходимо определить в месте метода входных параметров (код как上面).

2. Spring MVC находит объект user в Map иassigns формируемые параметры запроса к этому объекту user, только те свойства, которые определены в форме, будут заменены, те, которые не определены, будут null, не изменены. Поэтому необходимо, чтобы имена ключей, определенных в методе, модифицированном @ModelAttribute, соответствовали именам параметров метода контроллера (@RequestMapping() модифицированного метода). В противном случае эффект будет отсутствовать.

3. Spring MVC передает этот объект в параметры метода цели.

Внимание: в методе, модифицированном @ModelAttribute, ключ, добавляемый в map, должен соответствовать имени параметра типа метода цели.

最终效果:

Вот весь контент статьи, я надеюсь, что содержимое статьи принесет вам определенную пользу в изучении или работе, и также я надеюсь, что вы поддержите учебник呐喊!

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, загружен самостоятельно, сайт не обладает правами собственности, не underwent редактирование人工, и не несет ответственности за соответствующие юридические вопросы. Если вы обнаружите подозрительное содержание о нарушении авторских прав, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. При обнаружении, сайт немедленно удаляет涉嫌侵权的内容.

Основной учебник
Рекомендуется к просмотру