Автор оригинала: Michael Krimgen.
1. введение
В нашей статье Введение в использование Thymeleaf весной , мы видели, как привязать пользовательский ввод к объектам.
Мы использовали th:object и th:field в шаблоне Thymeleaf и @ModelAttribute в контроллере для привязки данных к объекту Java. В этой статье мы рассмотрим, как использовать аннотацию Spring @RequestParam в сочетании с Thymeleaf.
2. Параметры в формах
Давайте сначала создадим простой контроллер, который принимает четыре необязательных параметра запроса:
@Controller public class MainController { @RequestMapping("/") public String index( @RequestParam(value = "participant", required = false) String participant, @RequestParam(value = "country", required = false) String country, @RequestParam(value = "action", required = false) String action, @RequestParam(value = "id", required = false) Integer id, Model model ) { model.addAttribute("id", id); ListuserIds = asList(1,2,3,4); model.addAttribute("userIds", userIds); return "index"; } }
Имя нашего шаблона Thymeleaf – index.html . В следующих трех разделах мы будем использовать различные элементы HTML-формы, чтобы пользователь мог передавать данные контроллеру.
2.1. Входной элемент
Во-первых, давайте создадим простую форму с полем ввода текста и кнопкой для отправки формы:
Атрибут th:name=”участник” связывает значение поля ввода с параметром участник контроллера. Чтобы это сработало, нам нужно аннотировать параметр с помощью @RequestParam(value) .
2.2. Выберите элемент
Аналогично для элемента HTML select:
Значение выбранного параметра привязано к параметру страна , аннотированному @RequestParam(значение) .
2.3. Элемент кнопки
Еще один элемент, где мы можем использовать th:name , – это элемент button:
В зависимости от того, нажата ли первая или вторая кнопка для отправки формы, значение параметра action будет либо check-in , либо check-out .
3. Параметры в гиперссылках
Другим способом передачи параметров запроса контроллеру является гиперссылка:
И мы можем добавить параметры в скобках:
Thymeleaf оценивает вышеизложенное следующим образом::
Использование выражений Thymeleaf для создания гиперссылок особенно полезно, если мы хотим назначить значения параметров на основе переменных. Например, давайте создадим гиперссылку для каждого идентификатора пользователя:
Мы можем передать список идентификаторов пользователей в качестве свойства шаблону:
ListuserIds = asList(1,2,3); model.addAttribute("userIds", userIds);
И результирующий HTML будет:
Параметр id в гиперссылке привязан к параметру id , аннотированному @RequestParam(значение) .
4. Резюме
В этой короткой статье мы рассмотрели, как использовать параметры запроса Spring в сочетании с Thymeleaf.
Во-первых, мы создали простой контроллер, который принимает параметры запроса. Во-вторых, мы рассмотрели, как использовать Thymeleaf для создания HTML-страницы, которая может вызывать наш контроллер.
Полный исходный код для всех примеров в этой статье можно найти на GitHub.