Paramètres de demande de ressort avec Thymeleaf

1. Introduction

Dans notre article Introduction à l'utilisation de Thymeleaf au printemps, nous avons vu comment lier l'entrée utilisateur à des objets.

Nous avons utilisé th: object et th: field dans le modèle Thymeleaf et @ModelAttribute dans le contrôleur pour lier des données à un objet Java. Dans cet article, nous verrons comment utiliser l'annotation Spring @RequestParam en combinaison avec Thymeleaf.

2. Paramètres dans les formulaires

Commençons par créer un contrôleur simple qui accepte quatre paramètres de requête optionnels:

@Controller public class MainController { @RequestMapping("/") public String index( @RequestParam(value = "participant", required = false) String participant, @RequestParam(value = "country", required = false) String country, @RequestParam(value = "action", required = false) String action, @RequestParam(value = "id", required = false) Integer id, Model model ) { model.addAttribute("id", id); List userIds = asList(1,2,3,4); model.addAttribute("userIds", userIds); return "index"; } }

Le nom de notre modèle Thymeleaf est index.html . Dans les trois sections suivantes, nous utiliserons différents éléments de formulaire HTML pour que l'utilisateur transmette des données au contrôleur.

2.1. Élément d'entrée

Tout d'abord, créons un formulaire simple avec un champ de saisie de texte et un bouton pour soumettre le formulaire:

L'attribut th: name = "participant" lie la valeur du champ de saisie au paramètre participant du contrôleur. Pour que cela fonctionne, nous devons annoter le paramètre avec @RequestParam (valeur = «participant») .

2.2. Sélectionnez l'élément

De même pour l'élément de sélection HTML:

   Germany Netherlands Poland Latvia  

La valeur de l'option sélectionnée est liée au paramètre country , annoté avec @RequestParam (valeur = «country») .

2.3. Élément de bouton

Un autre élément où nous pouvons utiliser th: name est l'élément button:

 check-in check-out 

Selon que vous appuyez sur le premier ou le deuxième bouton pour soumettre le formulaire, la valeur de l' action de paramètre sera soit check-in soit check-out .

3. Paramètres dans les hyperliens

Un autre moyen de transmettre des paramètres de requête à un contrôleur consiste à utiliser un lien hypertexte:

Et nous pouvons ajouter des paramètres entre parenthèses:

Thymeleaf évalue ce qui précède comme suit:

L'utilisation d'expressions Thymeleaf pour générer des hyperliens est particulièrement utile si nous voulons attribuer des valeurs de paramètre en fonction de variables. Par exemple, générons un lien hypertexte pour chaque ID utilisateur:

  User [[${userId}]]

Nous pouvons transmettre une liste d'identifiants utilisateur en tant que propriété au modèle:

List userIds = asList(1,2,3); model.addAttribute("userIds", userIds);

Et le HTML résultant sera:

 User 1

User 2

User 3

Le paramètre id dans le lien hypertexte est lié au paramètre id , annoté avec @RequestParam (value = «id») .

4. Résumé

Dans ce court article, nous avons vu comment utiliser les paramètres de requête Spring en combinaison avec Thymeleaf.

Tout d'abord, nous avons créé un contrôleur simple qui accepte les paramètres de requête. Deuxièmement, nous avons examiné comment utiliser Thymeleaf pour générer une page HTML pouvant appeler notre contrôleur.

Le code source complet de tous les exemples de cet article est disponible sur GitHub.