Автор оригинала: Amy DeGregorio.
1. введение
В этом коротком уроке мы узнаем, как использовать Thymeleaf для создания URL-адресов с использованием переменных Spring path.
Мы используем переменные пути, когда хотим передать значение как часть URL-адреса. В контроллере Spring мы получаем доступ к этим значениям с помощью аннотации @PathVariable .
2. Использование переменных Пути
Во-первых, давайте настроим наш пример, создав простой Элемент класс:
public class Item { private int id; private String name; // Constructor and standard getters and setters }
Теперь давайте возьмем создание нашего контроллера:
@Controller public class PathVariablesController { @GetMapping("/pathvars") public String start(Model model) { List- items = new ArrayList
- (); items.add(new Item(1, "First Item")); items.add(new Item(2, "Second Item")); model.addAttribute("items", items); return "pathvariables/index"; } @GetMapping("/pathvars/single/{id}") public String singlePathVariable(@PathVariable("id") int id, Model model) { if (id == 1) { model.addAttribute("item", new Item(1, "First Item")); } else { model.addAttribute("item", new Item(2, "Second Item")); } return "pathvariables/view"; } }
В вашем index.html шаблон, давайте пройдемся по вашим элементам и создадим ссылки, вызывающие переменную single Path метод:
Код, который мы только что создали, делает URL-адреса такими:
http://localhost:8080/pathvars/single/1
Это стандартный синтаксис Thymeleaf для использования выражений в URL-адресах.
Мы также можем использовать конкатенацию для достижения того же результата:
3. Использование Нескольких Переменных Пути
Теперь, когда мы рассмотрели основы создания URL-адреса переменной пути в Thymeleaf, давайте быстро рассмотрим использование нескольких.
Во-первых, мы создадим класс Detail и изменим наш Элемент класс, чтобы иметь их список:
public class Detail { private int id; private String description; // constructor and standard getters and setters }
Далее, давайте добавим список Detail в Пункт :
private Listdetails;
Теперь давайте обновим наш контроллер, чтобы добавить метод, использующий несколько @PathVariable аннотаций:
@GetMapping("/pathvars/item/{itemId}/detail/{dtlId}") public String multiplePathVariable(@PathVariable("itemId") int itemId, @PathVariable("dtlId") int dtlId, Model model) { for (Item item : items) { if (item.getId() == itemId) { model.addAttribute("item", item); for (Detail detail : item.getDetails()) { if (detail.getId() == dtlId) { model.addAttribute("detail", detail); } } } } return "pathvariables/view"; }
Наконец, давайте изменим ваш index.html шаблон для создания URL-адресов для каждой подробной записи:
4. Заключение
В этом кратком руководстве мы узнали, как использовать Thymeleaf для создания URL-адресов с переменными пути. Мы начали с создания простого URL-адреса только с одним. Позже мы расширили наш пример, чтобы использовать несколько переменных пути.
Пример кода доступен на GitHub .