Thymeleafの条件文

Thymeleafの条件文

1. 概要

このチュートリアルでは、different types of conditionals available in Thymeleafを見ていきます。

Thymeleafの簡単な紹介については、このarticleを参照してください。

2. Mavenの依存関係

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


    org.thymeleaf
    thymeleaf
    3.0.9.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.9.RELEASE

他のSpringリリースでは、一致するthymeleaf-springX libraryを使用する必要があります。ここで、はSpringバージョンを表します。 Spring 5 is supported starting with 3.0.8.RELEASE, by Thymeleaf.にも注意してください

必要な依存関係の最新バージョンはhereにあります。

3. タイムリーフコンディショナル

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

この記事全体で使用するTeacher modelクラスを定義しましょう。

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

3.1. エルビス演算子

エルビス演算子?: を使用すると、変数の現在の状態に応じてHTML要素内にテキストをレンダリングできます。

変数がnullの場合、デフォルトの式を使用してデフォルトのテキストを提供できます。

上の例では、teacher.additionalSkills変数が定義されている場合はその内容を表示し、そうでない場合はテキスト「UNKNOWN」をレンダリングします。

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

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

次のコンパレータとそのテキスト表現は、> (gt), >= (ge), < (lt), ⇐ (le), == (eq) and != (ne)でサポートされています。

3.2. 場合-を除く

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


    Female
    Male

teacher.gender変数の内容がF,に等しい場合、値が「Female」のスパン要素がレンダリングされます。

それ以外の場合は、「Male」の要素がレンダリングされます。 このような設定は、ほとんどのプログラミング言語に存在するif-else clauseに相当します。

3.3. スイッチケース

式の結果が3つ以上ある場合は、th:switch 属性とth:case 属性を使用してHTML要素の条件付きレンダリングを行うことができます。


    NO COURSES YET!
    
    

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

4. 結論

この短い記事では、さまざまなタイプのThymeleaf条件を調査し、さまざまなオプションを示すいくつかの簡単な例を示しました。

例はGitHub projectにあります。