Променливи на пролетния път с мащерка

1. Въведение

В този кратък урок ще научим как да използваме Thymeleaf за създаване на URL адреси, използвайки променливи на Spring spring.

Използваме променливи на пътя, когато искаме да предадем стойност като част от 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 , нека прегледаме нашите елементи и създадем връзки, извикващи метода singlePathVariable :

Кодът, който току-що създадохме, прави URL адреси като този:

//localhost:8080/pathvars/single/1

Това е стандартен синтаксис на Thymeleaf за използване на изрази в URL адреси.

Можем също да използваме конкатенация, за да постигнем същия резултат:

3. Използване на множество променливи на пътя

След като разгледахме основите на създаването на URL адрес на променлива на пътя в Thymeleaf, нека бързо да разгледаме използването на множествени.

Първо ще създадем клас Detail и ще модифицираме класа ни Item, за да имаме списък с тях:

public class Detail { private int id; private String description; // constructor and standard getters and setters }

След това нека добавим списък с детайли към елемента :

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.