Federanforderungsparameter mit Thymeleaf

1. Einleitung

In unserem Artikel Einführung in die Verwendung von Thymeleaf im Frühjahr haben wir gesehen, wie Benutzereingaben an Objekte gebunden werden.

Wir haben th: object und th: field in der Thymeleaf-Vorlage und @ModelAttribute im Controller verwendet, um Daten an ein Java-Objekt zu binden. In diesem Artikel erfahren Sie, wie Sie die Spring-Annotation @RequestParam in Kombination mit Thymeleaf verwenden.

2. Parameter in Formularen

Erstellen wir zunächst einen einfachen Controller, der vier optionale Anforderungsparameter akzeptiert:

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

Der Name unserer Thymeleaf-Vorlage lautet index.html . In den folgenden drei Abschnitten verwenden wir verschiedene HTML-Formularelemente, damit der Benutzer Daten an den Controller übergeben kann.

2.1. Eingabeelement

Erstellen wir zunächst ein einfaches Formular mit einem Texteingabefeld und einer Schaltfläche zum Senden des Formulars:

Das Attribut th: name = ”Teilnehmer” bindet den Wert des Eingabefeldes an den Parameter Teilnehmer der Steuerung. Damit dies funktioniert, müssen wir den Parameter mit @RequestParam (Wert = "Teilnehmer") kommentieren .

2.2. Element auswählen

Ebenso für das HTML-Auswahlelement:

   Germany Netherlands Poland Latvia  

Der Wert der ausgewählten Option ist an den mit @RequestParam (value = "country") gekennzeichneten Parameter country gebunden .

2.3. Schaltflächenelement

Ein weiteres Element, in dem wir th: name verwenden können, ist das Schaltflächenelement:

 check-in check-out 

Je nachdem , ob die erste oder die zweite Taste gedrückt wird , um das Formular abzuschicken, wird der Wert des Parameters Aktion wird entweder Check-in oder Check-out .

3. Parameter in Hyperlinks

Eine andere Möglichkeit, Anforderungsparameter an einen Controller zu übergeben, ist ein Hyperlink:

Und wir können Parameter in Klammern hinzufügen:

Thymeleaf bewertet das Obige zu:

Die Verwendung von Thymeleaf-Ausdrücken zum Generieren von Hyperlinks ist besonders nützlich, wenn Parameterwerte basierend auf Variablen zugewiesen werden sollen. Lassen Sie uns beispielsweise für jede Benutzer-ID einen Hyperlink generieren:

  User [[${userId}]]

Wir können eine Liste von Benutzer-IDs als Eigenschaft an die Vorlage übergeben:

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

Und das resultierende HTML wird sein:

 User 1

User 2

User 3

Die Parameter- ID im Hyperlink ist an die mit @RequestParam (value = "id") kommentierte Parameter- ID gebunden .

4. Zusammenfassung

In diesem kurzen Artikel haben wir gesehen, wie Spring-Anforderungsparameter in Kombination mit Thymeleaf verwendet werden.

Zuerst haben wir einen einfachen Controller erstellt, der Anforderungsparameter akzeptiert. Zweitens haben wir uns angesehen, wie Sie mit Thymeleaf eine HTML-Seite generieren, die unseren Controller aufrufen kann.

Den vollständigen Quellcode für alle Beispiele in diesem Artikel finden Sie auf GitHub.