Iteration in Thymeleaf

Iteration in Thymeleaf

1. Überblick

Thymeleaf ista versatile Java template engine for processing XML, XHTML and HTML5 documents.

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ührungsartikelhere.

2. Maven-Abhängigkeiten

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

Hier sehen wir unsere Abhängigkeiten (thymeleaf undthymeleaf-spring):


    org.thymeleaf
    thymeleaf
    3.0.9.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.9.RELEASE

3. Beispieleinrichtung

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

Beginnen Sie mit dem Code des Modell-Layers:

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

Stellen Sie 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 diebuildStudents() -Smethod einfach eine Liste vonStudent-Objekten zurück, die wir dann zumodel hinzufügen.

4. Dasth:each-Attribut

In Thymeleaf wird die Iteration mithilfe des Sattributsth:each erreicht.

Eines der interessanten Dinge an diesem Attribut ist, dassit will accept and iterate over some different data types, wie:

  • Objekte, diejava.util.Iterable  implementieren

  • Objekte, diejava.util.Map implementieren

  • Arrays

  • Jedes andere Objekt wird so behandelt, als wäre es eine einwertige Liste, die ein Element enthält

Rufen wir nunth:each attribute mit den Daten auf, die wir in unserem obigen Beispiel eingerichtet haben:


    
    

Das Code-Snippet zeigt dieth:each, die über unsere Liste vonStudents iterieren. The model attribute is accessed using the $\{} notation, und jedes Element der Liste wird über die Variablestudent  an den Hauptteil der Schleife übergeben.

5. Statusvariable

Thymeleaf auchenables a useful mechanism to keep track of the iteration process via the status variable.

Die Statusvariable bietet die folgenden Eigenschaften:

  • index: Der aktuelle Iterationsindex, beginnend mit 0 (Null)

  • count: Die Anzahl der bisher verarbeiteten Elemente

  • size: Die Gesamtzahl der Elemente in der Liste

  • even/odd: Ü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

Sehen wir uns in unserem Beispiel an, wie die Statusvariable funktioniert:


    
    

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

Wenn wir die explizite Erstellung der Statusvariablen (in unserem Beispiel alsiStat dargestellt) weglassen, istwe could invoke our status variable by simply using the*studentStat*, die Aggregation der Variablenstudent mit dem SuffixStat.) s

6. Fazit

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

Wir haben die Iteration in Thymeleaf unter Verwendung des Attributsth:each zusammen mit den sofort einsatzbereiten Eigenschaften vorgestellt.

Eine funktionierende Version des in diesem Artikel gezeigten Codes ist in unserenGitHub repository verfügbar.