Bedingungen in Thymeleaf

Bedingungen in Thymeleaf

1. Überblick

In diesem Tutorial werden wir uns diedifferent types of conditionals available in Thymeleafansehen.

Eine kurze Einführung in Thymeleaf finden Sie inarticle.

2. Maven-Abhängigkeiten

Beginnen wir mit den Maven-Abhängigkeiten, die erforderlich sind, um Thymeleaf zusammen mit Spring zu verwenden:


    org.thymeleaf
    thymeleaf
    3.0.9.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.9.RELEASE

Für andere Spring-Versionen sollte die passendethymeleaf-springX -Bibliothek verwendet werden, wobeifür die Spring-Version steht. Bitte beachten Sie auch, dassSpring 5 is supported starting with 3.0.8.RELEASE, by Thymeleaf.

Die neuesten Versionen der erforderlichen Abhängigkeiten finden Sie inhere.

3. Thymeleaf Conditionals

Wir müssen zwischen Bedingungen unterscheiden, mit denen wir Text in einem HTML-Element abhängig von einer Bedingung rendern können, und solchen, mit denen die Instanziierung eines HTML-Elements selbst gesteuert wird.

Definieren wir unsereTeacher -Schmelzklasse, die wir in diesem Artikel verwenden werden:

public class Teacher implements Serializable {
    private String gender;
    private boolean isActive;
    private List courses = new ArrayList<>();
    private String additionalSkills;

3.1. Elvis-Betreiber

Der Elvis-Operator?: versetzt uns in die Lage, Text in einem HTML-Element abhängig vom aktuellen Status einer Variablen zu rendern.

Wir können Standardausdrücke verwenden, um einen Standardtext bereitzustellen, wenn eine Variablenull ist:

Im oberen Beispiel möchten wir den Inhalt der Variablenteacher.additionalSkillsanzeigen, wenn er definiert ist, und wir möchten, dass der Text „UNKNOWN“ anderweitig gerendert wird.

Es ist auch möglich, beliebigen Text abhängig von einem booleschen Ausdruck anzuzeigen:

Wir können eine einfache boolesche Variable wie im vorherigen Beispiel abfragen, aber auch Zeichenfolgenvergleiche und Bereichsprüfungen sind möglich.

Die folgenden Komparatoren und ihre Textdarstellungen werden in> (gt), >= (ge), < (lt), ⇐ (le), == (eq) and != (ne) unterstützt.

3.2. Wenn - es sei denn

Mit den Attributenth:ifand_th: without_ können wir ein HTML-Element abhängig von einer bereitgestellten Bedingung rendern:


    Female
    Male

Wenn der Inhalt der Variablenteacher.gendergleichF,ist, wird das span-Element mit dem Wert „Female“ gerendert.

Andernfalls wird das Element mit "Male" gerendert. Ein solches Setup ist vergleichbar mit einemif-else -Slause, der in den meisten Programmiersprachen vorhanden ist.

3.3. Schaltergehäuse

Wenn es mehr als zwei mögliche Ergebnisse eines Ausdrucks gibt, können wir dieth:switch andth:case -Sattribute für das bedingte Rendern der HTML-Elemente verwenden:


    NO COURSES YET!
    
    

Abhängig von der Größe desteacher.courses-Slists zeigen wir entweder einen Standardtext, den einzelnen Kurs oder alle verfügbaren Kurse an. Das Sternchen(*)wird für die Standardoption verwendet.

4. Fazit

In diesem kurzen Artikel haben wir die verschiedenen Arten von Thymeleaf-Bedingungen untersucht und einige vereinfachte Beispiele mit den verschiedenen Optionen vorgestellt.

Die Beispiele finden Sie inGitHub project.