URL Thymeleaf с использованием данных формы
как поместить данные формы в URL?
Невозможно создать URL Thymeleaf, используя данные, введенные пользователем в веб-форме. Thymeleaf - это препроцессор HTML на стороне сервера. Он использует данные, уже имеющиеся на сервере, для «заполнения пробелов» в шаблоне Thymeleaf. Полученный HTML затем отправляется с сервера в браузер. В этот момент в браузере нет Thymeleaf.
Использование данных POST
Вы вправе использовать операцию http POST для данных формы. Это означает, что все предоставленные пользователем данные будут отправлены на сервер в теле запроса, как я уверен, вы уже знаете.
Как правило, не стоит добавлять такие данные в URL. Вы можете сделать это, используя JavaScript на стороне клиента - но это плохая идея по разным причинам - не в последнюю очередь это: URL-адреса могут быть добавлены в закладки, сохранены и легко воспроизведены. Данные формы обычно представляют транзакцию. Вы не хотите повторно отправлять большинство транзакций таким способом (повторяющиеся заказы и т. Д. c.). Некоторое фоновое чтение: здесь .
Итак, используйте более общий c URL, а затем извлеките данные формы из тела запроса. В любом случае данные в теле в основном совпадают с данными, которые вы пытаетесь добавить в URL.
URL-адреса Thymeleaf - в целом
Последнее замечание: только для дальнейшего использования и , не относящиеся непосредственно к этому параметру c URL , по причинам, уже упомянутым выше ...
Вместо использования этого:
"@{/cart/} + ${product.getId() + @{/} + ${quantity}"
... ссылка должна быть создана следующим образом:
"@{/cart/{id}/{qty}(id=${product.id},qty=${quantity})}"
В этом примере {id}
является заполнителем (называйте его как хотите), который получает свое значение из параметра в скобках ()
:
id=${product.id}
И те же пункты относятся к {qty}
.
Кроме того, вам не нужно использовать геттеры, такие как getId()
напрямую. Используйте имя поля id
. Thymeleaf будет обрабатывать вызов соответствующего получателя (при условии, что он определен правильно).
См. Документацию для Thymeleaf URL-ссылки .