Рубрики
Без рубрики

Параметры запроса пружины с Thymeleaf

Узнайте, как использовать параметры запроса с Spring и Thymeleaf.

Автор оригинала: 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);
        List userIds = 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 для создания гиперссылок особенно полезно, если мы хотим назначить значения параметров на основе переменных. Например, давайте создадим гиперссылку для каждого идентификатора пользователя:

Мы можем передать список идентификаторов пользователей в качестве свойства шаблону:

List userIds = asList(1,2,3);
model.addAttribute("userIds", userIds);

И результирующий HTML будет:

Параметр id в гиперссылке привязан к параметру id , аннотированному @RequestParam(значение) .

4. Резюме

В этой короткой статье мы рассмотрели, как использовать параметры запроса Spring в сочетании с Thymeleaf.

Во-первых, мы создали простой контроллер, который принимает параметры запроса. Во-вторых, мы рассмотрели, как использовать Thymeleaf для создания HTML-страницы, которая может вызывать наш контроллер.

Полный исходный код для всех примеров в этой статье можно найти на GitHub.