Thymeleafの条件文
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プロジェクト]にあります。