Spring Path Variablen mit Thymeleaf

1. Einleitung

In diesem kurzen Tutorial erfahren Sie, wie Sie mit Thymeleaf URLs mithilfe von Spring-Pfadvariablen erstellen.

Wir verwenden Pfadvariablen, wenn wir einen Wert als Teil der URL übergeben möchten. In einem Spring-Controller greifen wir über die Annotation @PathVariable auf diese Werte zu .

2. Verwenden von Pfadvariablen

Lassen Sie uns zunächst unser Beispiel einrichten, indem Sie eine einfache Elementklasse erstellen :

public class Item { private int id; private String name; // Constructor and standard getters and setters }

Lassen Sie uns nun unseren Controller erstellen:

@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"; } }

Lassen Sie uns in unserer index.html- Vorlage unsere Elemente durchlaufen und Links erstellen, die die singlePathVariable- Methode aufrufen :

Der Code, den wir gerade erstellt haben, erstellt URLs wie folgt:

//localhost:8080/pathvars/single/1

Dies ist die Standard-Thymeleaf-Syntax für die Verwendung von Ausdrücken in URLs.

Wir können auch die Verkettung verwenden, um das gleiche Ergebnis zu erzielen:

3. Verwenden mehrerer Pfadvariablen

Nachdem wir uns nun mit den Grundlagen zum Erstellen einer URL für Pfadvariablen in Thymeleaf befasst haben, wollen wir uns schnell mit der Verwendung mehrerer URLs befassen.

Zuerst erstellen wir eine Detailklasse und ändern unsere Item- Klasse, um eine Liste davon zu erhalten:

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

Als nächstes wollen wir eine Liste hinzufügen Details zum Artikel :

private List details;

Aktualisieren wir nun unseren Controller, um eine Methode mit mehreren @ PathVariable- Annotationen hinzuzufügen :

@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"; }

Zuletzt ändern wir unsere index.html- Vorlage, um URLs für jeden Detaildatensatz zu erstellen:


    

4. Fazit

In diesem kurzen Tutorial haben wir gelernt, wie Sie mit Thymeleaf URLs mit Pfadvariablen erstellen. Wir haben zunächst eine einfache URL mit nur einer erstellt. Später haben wir unser Beispiel erweitert, um mehrere Pfadvariablen zu verwenden.

Der Beispielcode ist über GitHub verfügbar.