Spring Request Parameters met Thymeleaf

1. Inleiding

In ons artikel Inleiding tot het gebruik van Thymeleaf in het voorjaar hebben we gezien hoe gebruikersinvoer aan objecten kan worden gekoppeld.

We gebruikten th: object en th: veld in de Thymeleaf-sjabloon en @ModelAttribute in de controller om gegevens aan een Java-object te binden. In dit artikel gaan we bekijken hoe u de lente-annotatie kunt gebruiken @RequestParam in combinatie met Thymeleaf.

2. Parameters in formulieren

Laten we eerst een eenvoudige controller maken die vier optionele verzoekparameters accepteert:

@Controller openbare klasse MainController {@RequestMapping ("/") openbare String-index (@RequestParam (value = "participant", verplicht = false) String-deelnemer, @RequestParam (value = "country", verplicht = false) String-land, @ RequestParam (waarde = "action", vereist = false) String actie, @RequestParam (waarde = "id", vereist = false) Geheel getal id, modelmodel) {model.addAttribute ("id", id); Lijst userIds = asList (1,2,3,4); model.addAttribute ("userIds", userIds); retourneer "index"; }}

De naam van onze Thymeleaf-sjabloon is index.html. In de volgende drie secties zullen we verschillende HTML-formulierelementen gebruiken om de gebruiker gegevens door te geven aan de controller.

2.1. Invoerelement

Laten we eerst een eenvoudig formulier maken met een tekstinvoerveld en een knop om het formulier in te dienen:

Het attribuut th: name = "deelnemer" bindt de waarde van het invoerveld aan de parameter deelnemer van de controller. Om dit te laten werken, moeten we de parameter annoteren met @RequestParam (waarde = “deelnemer”).

2.2. Selecteer Element

Evenzo voor het HTML-selectie-element:

   Duitsland Nederland Polen Letland 

De waarde van de geselecteerde optie is gebonden aan de parameter land, geannoteerd met @RequestParam (waarde = "land").

2.3. Knopelement

Een ander element waar we gebruik van kunnen maken th: naam is het knopelement:

 inchecken uitchecken 

Afhankelijk van of de eerste of tweede knop wordt ingedrukt om het formulier te verzenden, de waarde van de parameter actie zal het ook zijn Check in of uitchecken.

3. Parameters in hyperlinks

Een andere manier om verzoekparameters door te geven aan een controller is via een hyperlink:

En we kunnen parameters tussen haakjes toevoegen:

Thymeleaf evalueert het bovenstaande om:

Het gebruik van Thymeleaf-expressies om hyperlinks te genereren is met name handig als we parameterwaarden willen toewijzen op basis van variabelen. Laten we bijvoorbeeld een hyperlink genereren voor elke gebruikers-ID:

  Gebruiker [[$ {userId}]]

We kunnen een lijst met gebruikers-ID's als eigenschap doorgeven aan de sjabloon:

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

En de resulterende HTML zal zijn:

 Gebruiker 1

Gebruiker 2

Gebruiker 3

De parameter ID kaart in de hyperlink is gebonden aan de parameter ID kaart, geannoteerd met @RequestParam (waarde = "id").

4. Samenvatting

In dit korte artikel hebben we gezien hoe we Spring request-parameters kunnen gebruiken in combinatie met Thymeleaf.

Eerst hebben we een eenvoudige controller gemaakt die verzoekparameters accepteert. Ten tweede hebben we gekeken hoe we Thymeleaf kunnen gebruiken om een ​​HTML-pagina te genereren die onze controller kan aanroepen.

De volledige broncode voor alle voorbeelden in dit artikel is te vinden op GitHub.