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

Переменные пути весны с Thymeleaf

Узнайте, как использовать Thymeleaf для создания URL-адресов с переменными пути.

Автор оригинала: 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 List details;

Теперь давайте обновим наш контроллер, чтобы добавить метод, использующий несколько @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 .