Spring und Thymeleaf 3: Ausdrücke

Frühling und Thymeleaf 3: Ausdrücke

1. Einführung

Thymeleaf ist eine Java-Vorlagen-Engine zum Verarbeiten und Erstellen von HTML, XML, JavaScript, CSS und einfachem Text. Ein Intro zu Thymeleaf und Spring finden Sie unterthis write-up.

Neben diesen Grundfunktionen bietet uns Thymeleaf eine Reihe von Dienstprogrammobjekten, mit denen wir allgemeine Aufgaben in unserer Anwendung ausführen können.

In diesem Artikel wird eine Kernfunktion in Thymeleaf 3.0 - Ausdrucksdienstprogrammobjekte in Spring MVC-Anwendungen erläutert. Insbesondere werden wir das Thema der Verarbeitung von Daten, Kalendern, Zeichenfolgen, Objekten und vielem mehr behandeln.

2. Maven-Abhängigkeiten

Lassen Sie uns zunächst die erforderliche Konfiguration für die Integration von Thymeleaf in Spring anzeigen. Die Bibliothekthymeleaf-springwird in unseren Abhängigkeiten benötigt:


    org.thymeleaf
    thymeleaf
    3.0.9.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.9.RELEASE

Beachten Sie, dass für ein Spring 4-Projekt die Bibliothekthymeleaf-spring4anstelle vonthymeleaf-spring5verwendet werden muss. Die neueste Version der Abhängigkeiten finden Sie inhere.

3. Ausdrucksdienstprogrammobjekte

Wenn Sie einen Schritt zurücktreten und sehen möchten, wie Sie Thymeleaf 3.0 in Ihrem Web-App-Projekt konfigurieren, sehen Sie sich diesetutorial an, bevor Sie sich mit dem Hauptfokus dieser Beschreibung befassen.

Für den aktuellen Artikel haben wir einen Spring-Controller und eine HTML-Datei erstellt, um alle Funktionen zu testen, die wir diskutieren werden. Nachfolgend finden Sie eine vollständige Liste der verfügbaren Hilfsobjekte und ihrer Funktionen:

  • #dates: Dienstprogrammmethoden fürjava.util.Date Objekte

  • #calendars: Ähnlich wie#dates, wird fürjava.util.Calendar Objekte verwendet

  • #numbers: Dienstprogrammmethoden zum Formatieren numerischer Objekte

  • #strings: Dienstprogrammmethoden fürString Objekte

  • #objects: Dienstprogrammmethoden für die JavaObject-Klasse im Allgemeinen

  • #bools: Dienstprogrammmethoden für die Auswertung vonboolean

  • #arrays: Dienstprogrammmethoden für Arrays

  • #lists: Dienstprogrammmethoden für Listen

  • #sets: Dienstprogrammmethoden für Mengen

  • #maps: Dienstprogrammmethoden für Karten

  • #aggregates: Dienstprogrammmethoden zum Erstellen von Aggregaten in Arrays oder Sammlungen

  • #messages: Dienstprogrammmethoden zum Abrufen von externalisierten Nachrichten in Variablenausdrücken

3.1. Termine Objekte

Die erste Funktion, die wir diskutieren möchten, ist die Verarbeitung derjava.util.Date-Objekte. Die für die Verarbeitung vondateverantwortlichen Ausdrucksdienstprogrammobjekte beginnen mit#dates.functionName().. Die erste Funktion, die wir behandeln möchten, ist die Formatierung einesDate-Objekts (das zu den Spring-Modellparametern hinzugefügt wird).

Angenommen, wir möchten das Format vonISO8601verwenden:

Unabhängig davon, wie unseredate auf der Back-End-Seite eingestellt wurden, muss sie entsprechend diesem Standard angezeigt werden. Wenn wir das Format genau festlegen möchten, können wir es außerdem manuell angeben:

Die Funktion verwendet zwei Variablen als Parameter:Date und sein Format.

Abschließend einige ähnlich nützliche Funktionen, die wir verwenden können:

Im ersten erhalten wir den Namen des Wochentags, im zweiten erstellen wir ein neuesDate-Objekt und schließlich erstellen wir ein neuesDate mit einer auf 00:00 eingestellten Zeit .

3.2. Kalenderobjekte

Kalender-Dienstprogramme sind der Datumsverarbeitung sehr ähnlich, außer dass wir eine Instanz desjava.util.Calendar-Objekts verwenden:

Der einzige Unterschied besteht darin, wann wir eine neueCalendar-Instanz erstellen möchten:

Bitte beachten Sie, dass wir eine beliebigeCalendar-Klassenmethode verwenden können, um die angeforderten Daten zu erhalten.

3.3. Zahlenverarbeitung

Ein weiteres sehr seltenes Merkmal ist die Verarbeitung von Zahlen. Konzentrieren wir uns auf die Variablenum, die zufällig mit dem Typdoubleerstellt wurde:

In der ersten Zeile formatieren wir die Dezimalzahl, indem wir ganzzahlige Mindestziffern und exakte Dezimalziffern festlegen. In der zweiten haben wir zusätzlich zu den Ganzzahl- und Dezimalstellen das Dezimaltrennzeichen angegeben. Die Optionen sindPOINT,COMMA,WHITESPACE,NONE oderDEFAULT (nach Gebietsschema).

Es gibt eine weitere Funktion, die wir in diesem Absatz vorstellen möchten. Es ist die Erstellung einer Folge von Ganzzahlen:

Im ersten Beispiel haben wir Thymeleaf eine Sequenz von 0-2 generieren lassen, während wir im zweiten Beispiel zusätzlich zum Minimal- und Maximalwert eine Definition von step angegeben haben (in diesem Beispiel ändern sich die Werte um zwei).

Bitte beachten Sie, dass das Intervall auf beiden Seiten geschlossen ist.

3.4. Saitenoperationen

Es ist das umfassendste Merkmal von Ausdrucksnutzungsobjekten.

Wir können die Beschreibung mit dem Dienstprogramm beginnen, leere odernullString Objekte zu überprüfen. Sehr oft verwendeten Entwickler dazu Java-Methoden in Thymeleaf-Tags, was fürnull-Objekte möglicherweise nicht sicher ist.

Stattdessen können wir dies tun:

Das ersteString ist nicht leer, daher gibt die Methodefalse. zurück. Das zweiteString istnull, sodass wirtrue erhalten. Schließlich können wir die Methode#strings.defaultString(…)verwenden, um einen Standardwert anzugeben, wennString leer ist.

Es gibt viel mehr Methoden. Alle funktionieren nicht nur mit Zeichenfolgen, sondern auch mitJava.Collections.. Verwenden Sie beispielsweise Teilzeichenfolgen-bezogene Operationen:

oder um nullsicheren Vergleich und Verkettung zu verwenden:

Schließlich gibt es textbezogene Funktionen, bei denen die Syntax immer gleich bleibt:

Bei der ersten Methode hat abgekürzter Text eine maximale Größe vonn. Wenn ein Text größer ist, wird er abgeschnitten und mit „…“ abgeschlossen.

Bei der zweiten Methode werden Wörter in Großbuchstaben geschrieben.

3.5. Aggregate

Die letzte, aber nicht die geringste Funktion, die wir hier diskutieren möchten, istaggregates. Sie sindnullicher und bieten Dienstprogramme zur Berechnung des Durchschnitts oder der Summe aus einem Array oder einer anderen Sammlung:

4. Fazit

In diesem Artikel wurden die im Thymeleaf-Framework, Version 3.0, implementierten Funktionen von Expression Utility Objects erläutert.

Die vollständige Implementierung dieses Tutorials finden Sie inthe GitHub project.

How to test? Wir empfehlen, zuerst mit einem Browser zu spielen und dann auch die vorhandenen JUnit-Tests zu überprüfen.

Bitte beachten Sie, dass Beispiele nicht alle verfügbaren Utility-Ausdrücke abdecken. Wenn Sie mehr über alle Arten von Dienstprogrammen erfahren möchten, schauen Sie sichhere an.