|
0 / 0 / 0
Регистрация: 07.02.2017
Сообщений: 33
|
|||||||||||
Spring MVC работа с формой30.03.2017, 18:13. Показов 1520. Ответов 1
Метки нет (Все метки)
Добрый день!
Для тех, кто работал со Spring MVC ни для кого не секрет, что Spring имеет свою собственную библиотеку тегов. Об одном из этих тегов и будет мой вопрос. А именно о теге "form:form", а вернее о его атрибуте modelAttribute (аналог устаревшего commandName). Читая документацию, я сначала подумал что этот атрибут используется только для того, чтобы заполнить форму какими-то начальными данными (т.е. основа для формы, backing object). И только для этого, ни для чего более. Но в процессе работы выяснилось, что этот атрибут, также определяет объект, который будет отправлен данной формой и будет получен в контроллере. Но как это происходит? За счет чего? Посредством чего? За счет какого механизма? Ведь, насколько мне известно, HTML-запросы не могут передавать объекты - они могут передавать параметры запроса, но никак не объекты. Если вопрос не понятен, то опишу подробности. Если понятен, то дальше можно не читать. На всякий случай код контроллера:
При запросе на "/" в атрибут модели помещается объект userObj (что практически эквивалентно добавлению атрибута запроса в не Spring MVC приложении, т.е. атрибут модели userObj будет доступен только в рамках одного запроса) и отдается представление index - на нем располагается форма. Сервер отдает страницу с формой. Поскольку useObj пустой, то форма отрендерится с пустыми значениями полей. Запрос завершается, атрибут модели userObj больше не доступен. Заполняем поля формы значениями и нажимаем submit. Начинается новый запрос. Данные уходят в обработчик checkUser(). В сигнатуре checkUser(): public String checkUser(@Valid @ModelAttribute(name = "userObj") User user, BindingResult bindingResult, Model model) видно, что мы извлекаем из модели атрибут userObj и помещаем его в переменную User user. Но как? Ведь это уже другой запрос и прошлый атрибут userObj (который был пустым) уже утерян! Остается только предположить, что форма каким-то образом генерирует новый атрибут модели, в который помещает заполненный объект user. Но как это происходит технически? Ведь как я уже написал, запрос клиента не может передать атрибут модели (он может передавать только параметры запроса - введенные данные в поля формы). И происходит это генерирование, видимо, за счет атрибута modelAttribute (устар. commandName). Получается что у сервера уже откуда-то есть информация о том, что атрибут должен быть именно "userObj". Если в контроллере попытаться получить атрибут с другим именем, например, "useObj2" то будет брошено исключение. Каким образом передается от клиента серверу информация об атрибуте модели и о его имени? Посредством чего modelAttribute (устар. commandName) из JSP формы передает атрибут в модель? Может за счет id формы (в которую в конечном счете отрендериться Spring-форма и modelAttribute станет видимо id'шником)? Или как? Факт остается фактом, получить в контроллере введенные данные можно только указав значение modelAttribute (устар. commandName). В теле POST-запроса, передаваемого от клиента, есть информация о введенных данных, но нет и быть не может об атрибуте модели. Но откуда-то сервер знает имя нужного атрибута? С уважением, надеюсь понятно написал.
0
|
|||||||||||
| 30.03.2017, 18:13 | |
|
Ответы с готовыми решениями:
1
Spring MVC работа с видеопотоком Работа с url в spring mvc, redirect Работа с web.xml (Spring MVC + MySQL) |
|
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
| 30.03.2017, 19:18 | |
|
слишком много букв.
Делается просто, в хроме смотришь, что уходит в запросе, в дебаггере смотришь, что приходит в запросе, сравниваешь, получаешь ответ на свой вопрос. Если непонятно, кидай сюда скрины из браузера и дебаггера.
0
|
|
| 30.03.2017, 19:18 | |
|
Помогаю со студенческими работами здесь
2
Работа с двумя контроллерами (Spring MVC + Security)
Spring MVC. 404 ошибка при включении Spring Data JPA в проект Перевод проекта из Spring Maven в обычный Spring MVC задания по spring core и spring mvc для новичков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|