Parametri della richiesta di primavera con foglia di timone

1. Introduzione

Nel nostro articolo Introduzione all'uso di Thymeleaf in primavera, abbiamo visto come associare l'input dell'utente agli oggetti.

Abbiamo utilizzato th: object e th: field nel modello Thymeleaf e @ModelAttribute nel controller per associare i dati a un oggetto Java. In questo articolo, vedremo come utilizzare l'annotazione Spring @RequestParam in combinazione con Thymeleaf.

2. Parametri nei moduli

Creiamo prima un semplice controller che accetti quattro parametri di richiesta opzionali:

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

Il nome del nostro template Thymeleaf è index.html . Nelle tre sezioni seguenti, utilizzeremo diversi elementi del modulo HTML per consentire all'utente di passare i dati al controller.

2.1. Elemento di input

Per prima cosa, creiamo un semplice modulo con un campo di immissione di testo e un pulsante per inviare il modulo:

L'attributo th: name = "partecipante" lega il valore del campo di input al parametro partecipante del controller. Perché funzioni, dobbiamo annotare il parametro con @RequestParam (value = "participant") .

2.2. Seleziona elemento

Allo stesso modo per l'elemento di selezione HTML:

   Germany Netherlands Poland Latvia  

Il valore dell'opzione selezionata è vincolato al parametro country , annotato con @RequestParam (value = "country") .

2.3. Elemento pulsante

Un altro elemento in cui possiamo usare th: name è l'elemento button:

 check-in check-out 

A seconda che venga premuto il primo o il secondo pulsante per inviare il modulo, il valore dell'azione del parametro sarà check-in o check-out .

3. Parametri nei collegamenti ipertestuali

Un altro modo per passare i parametri di richiesta a un controller è tramite un collegamento ipertestuale:

E possiamo aggiungere parametri tra parentesi:

Thymeleaf valuta quanto sopra per:

L'utilizzo di espressioni Thymeleaf per generare collegamenti ipertestuali è particolarmente utile se si desidera assegnare valori di parametro in base a variabili. Ad esempio, generiamo un collegamento ipertestuale per ogni ID utente:

  User [[${userId}]]

Possiamo passare un elenco di ID utente come proprietà al modello:

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

E l'HTML risultante sarà:

 User 1

User 2

User 3

Il parametro id nel collegamento è legato al parametro id , annotato con @RequestParam (valore = “id”) .

4. Riepilogo

In questo breve articolo, abbiamo visto come utilizzare i parametri della richiesta Spring in combinazione con Thymeleaf.

Innanzitutto, abbiamo creato un semplice controller che accetta i parametri della richiesta. In secondo luogo, abbiamo esaminato come utilizzare Thymeleaf per generare una pagina HTML che può chiamare il nostro controller.

Il codice sorgente completo per tutti gli esempi in questo articolo può essere trovato su GitHub.