1.概要

このチュートリアルでは、Thymeleafで利用可能な** さまざまな種類の条件式を見ていきます。

Thymeleafの簡単な紹介については、次のリンクを参照してください。

2. Mavenの依存関係

ThymeleafとSpringを併用するために必要なMavenの依存関係から始めましょう。

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.0.9.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring5</artifactId>
    <version>3.0.9.RELEASE</version>
</dependency>

他のSpringリリースでは、

__ Thymeleaf-springX


libraryを使用する必要があります。ここで、


XはSpringバージョンを表します。また、Spring 5はThymeleafによる

3.0.8.RELEASE__からサポートされています。

必要な依存関係の最新バージョンはhttps://search.maven.org/classic/#search%7Cga%7C1%7Cthymeleaf[ここ]にあります。

3. Thymeleafの条件文

条件に応じてHTML要素内のテキストをレンダリングできる条件と、HTML要素自体のインスタンス化を制御する条件とを区別する必要があります。

この記事で使用する

__Teacher

__modelクラスを定義しましょう。

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

3.1. エルビスオペレータ

Elvis演算子____ ?:は、変数の現在の状態に応じてHTML要素内のテキストをレンダリングします。

変数が

null

の場合、デフォルトの式を使用してデフォルトのテキストを指定できます。

<td th:text="${teacher.additionalSkills} ?: 'UNKNOWN'"/>

上の例では、


_teacher.additionalSkills


変数が定義されている場合はその内容を表示し、それ以外の場合はテキスト「

UNKNOWN_

」をレンダリングします。

論理式に応じて任意のテキストを表示することもできます。

<td th:text="${teacher.active} ? 'ACTIVE' : 'RETIRED'"/>

前の例のように単純なブール変数を問い合わせることができますが、文字列比較と範囲チェックも可能です。

次の比較子とそのテキスト表現は、

__>(gt)、> =(ge)、<(lt)、⇐(le)、==(eq)、!=(ne)

__でサポートされています。

3.2. If – 以外


__th:if


and

th:except__属性を使用すると、提供された条件に応じてHTML要素をレンダリングできます。

<td>
    <span th:if="${teacher.gender == 'F'}">Female</span>
    <span th:unless="${teacher.gender == 'F'}">Male</span>
</td>



_teacher.gender


変数の内容が


Fと等しい場合、


その場合、値が ”

F Female_

“のspan要素がレンダリングされます。

それ以外の場合は、「

Male

」の要素がレンダリングされます。このような設定は、ほとんどのプログラミング言語に存在する

__if-else

__句に相当します。

3.3. スイッチケース

式の結果が3つ以上ある場合は、HTML要素の条件付きレンダリングに

__th:switch


および


th:case

__attributesを使用できます。

<td th:switch="${#lists.size(teacher.courses)}">
    <span th:case="'0'">NO COURSES YET!</span>
    <span th:case="'1'" th:text="${teacher.courses[0]}"></span>
    <div th:case="** ">
        <div th:each="course:${teacher.courses}" th:text="${course}"/>
    </div>
</td>


teacher.courses


リストのサイズに応じて、デフォルトのテキスト、単一のコース、または利用可能なすべてのコースのいずれかを表示します。デフォルトオプションにはアスタリスク


(** )

__が使用されます。

4.まとめ

この短い記事では、さまざまな種類のThymeleaf条件式を調べ、さまざまなオプションを示す簡単な例をいくつか紹介しました。

例はhttps://github.com/eugenp/tutorials/tree/master/spring-thymeleaf[GitHubプロジェクト]にあります。