Iteration in Thymeleaf

1. Übersicht

Thymeleaf ist eine vielseitige Java-Template-Engine für die Verarbeitung von XML-, XHTML- und HTML5-Dokumenten .

In diesem kurzen Tutorial sehen wir uns an, wie wir mit Thymeleaf eine Iteration durchführen können, zusammen mit einigen anderen Funktionen, die von der Bibliothek bereitgestellt werden.

Weitere Informationen zu Thymeleaf finden Sie in unserem Einführungsartikel hier.

2. Maven-Abhängigkeiten

Um dieses Beispiel zu erstellen, verwenden wir Spring Framework-Bibliotheken zusammen mit Thymeleaf-Bibliotheken.

Hier können wir unsere Abhängigkeiten sehen (Thymeleaf und Thymeleaf-Spring):

 org.thymeleaf thymeleaf 3.0.11.RELEASE   org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

3. Beispieleinrichtung

Bevor wir in die Ansichtsebene springen, erstellen wir die MVC-Struktur für unser Beispiel.

Beginnend mit dem Snippet-Code der Modellebene:

public class Student implements Serializable { private Integer id; private String name; // standard contructors, getters, and setters }

Stellen wir auch die Controller-Methode bereit, die für das Laden des Modells und das Zurückgeben an die Ansichtsebene verantwortlich ist:

@GetMapping("/listStudents") public String listStudent(Model model) { model.addAttribute("students", StudentUtils.buildStudents()); return "listStudents.html"; }

In unserem obigen Beispiel gibt die buildStudents () -Methode einfach eine Liste von Student- Objekten zurück, die wir dann dem Modell hinzufügen .

4. Das th: jedes Attribut

In Thymeleaf wird die Iteration mithilfe des Attributs th: each erreicht .

Eines der interessanten Dinge an diesem Attribut ist, dass es einige verschiedene Datentypen akzeptiert und durchläuft , wie z.

  • Objekte, die java.util.Iterable implementieren
  • Objekte, die java.util.Map implementieren
  • Arrays
  • Jedes andere Objekt wird so behandelt, als wäre es eine einwertige Liste mit einem Element

Rufen wir nun das Attribut th: jedes mit den Daten auf, die wir in unserem obigen Beispiel eingerichtet haben:

Das Code-Snippet zeigt das th: jedes iteriert über unsere Studentenliste . Auf das Modellattribut wird mit der Notation $ {} zugegriffen , und jedes Element der Liste wird über die Student- Variable an den Hauptteil der Schleife übergeben .

5. Statusvariable

Thymeleaf ermöglicht auch einen nützlichen Mechanismus, um den Iterationsprozess über die Statusvariable zu verfolgen .

Die Statusvariable bietet die folgenden Eigenschaften:

  • index : Der aktuelle Iterationsindex, beginnend mit 0 (Null)
  • count : Die Anzahl der bisher verarbeiteten Elemente
  • Größe : Die Gesamtzahl der Elemente in der Liste
  • gerade / ungerade : Überprüft, ob der aktuelle Iterationsindex gerade oder ungerade ist
  • first : Überprüft, ob die aktuelle Iteration die erste ist
  • last : Überprüft, ob die aktuelle Iteration die letzte ist

Mal sehen, wie die Statusvariable in unserem Beispiel funktioniert:

Hier haben wir die Eigenschaft iStat.odd eingefügt , um die Bedingung auszuwerten und einen fetten Stil für die aktuelle Zeile festzulegen . Das gleiche gilt für die nächste Auswertung, aber dieses Mal verwenden wir iStat.even , um einen Wert über das HTML-Attribut alt / title zu drucken.

Falls wir die explizite Erstellung einer Statusvariablen ( in unserem Beispiel als iStat dargestellt) weglassen , können wir unsere Statusvariable einfach über den studentStat aufrufen , bei dem es sich um die Aggregation der Variablen student mit dem Suffix Stat handelt.

6. Fazit

In diesem Artikel haben wir eine der vielen Funktionen der Thymeleaf-Bibliothek untersucht.

Wir haben die Iteration in Thymeleaf unter Verwendung des Attributs th: each zusammen mit seinen sofort einsatzbereiten Eigenschaften vorgestellt.

Eine funktionierende Version des in diesem Artikel gezeigten Codes ist in unserem GitHub-Repository verfügbar.