English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Описание проблемы: когда мы используем значения, переданные через форму, если определены свойства 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 (во время отправки письма, пожалуйста, замените # на @) для сообщения о нарушении и предоставьте соответствующие доказательства. При обнаружении, сайт немедленно удаляет涉嫌侵权的内容.