Variables de chemin de ressort avec Thymeleaf

1. Introduction

Dans ce court didacticiel, nous allons apprendre à utiliser Thymeleaf pour créer des URL à l'aide de variables de chemin Spring.

Nous utilisons des variables de chemin lorsque nous voulons transmettre une valeur dans le cadre de l'URL. Dans un contrôleur Spring, nous accédons à ces valeurs à l'aide de l' annotation @PathVariable .

2. Utilisation des variables de chemin

Tout d'abord, configurons notre exemple en créant une classe Item simple :

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

Maintenant, prenons créer notre contrôleur:

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

Dans notre modèle index.html , parcourons nos éléments et créons des liens appelant la méthode singlePathVariable :

Le code que nous venons de créer crée des URL comme ceci:

//localhost:8080/pathvars/single/1

Il s'agit de la syntaxe Thymeleaf standard pour l'utilisation d'expressions dans les URL.

Nous pouvons également utiliser la concaténation pour obtenir le même résultat:

3. Utilisation de plusieurs variables de chemin

Maintenant que nous avons couvert les bases de la création d'une URL de variable de chemin dans Thymeleaf, couvrons rapidement l'utilisation de plusieurs.

Tout d'abord, nous allons créer une classe Detail et modifier notre classe Item pour en avoir une liste:

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

Ensuite, ajoutons une liste de détails à l' élément :

private List details;

Maintenant, mettons à jour notre contrôleur pour ajouter une méthode utilisant plusieurs annotations @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"; }

Enfin, modifions notre modèle index.html pour créer des URL pour chaque enregistrement de détail:


    

4. Conclusion

Dans ce rapide didacticiel, nous avons appris à utiliser Thymeleaf pour créer des URL avec des variables de chemin. Nous avons commencé par créer une URL simple avec un seul. Plus tard, nous avons développé notre exemple pour utiliser plusieurs variables de chemin.

L'exemple de code est disponible à l'adresse over sur GitHub.