1概要


Thymeleaf

は、XML、XHTML、およびHTML5文書を処理するための

汎用のJavaテンプレートエンジンです

このクイックチュートリアルでは、Thymeleafを使用して反復処理を実行する方法と、ライブラリによって提供されるその他の機能について説明します。

Thymeleafの詳細については、紹介記事へのリンクを参照してください。


2 Mavenの依存関係

この例を作成するには、Thymeleafライブラリと一緒にSpring Frameworkライブラリを使用します。

ここで私たちの依存関係(https://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.thymeleaf%22%20AND%20a%3A%22thymeleaf%22[thymeleaf]とhttpsを見ることができます//search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.thymeleaf%22%20AND%20a%3A%22thymeleaf-spring4%22[thymeleaf-spring]):

<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>


3セットアップ例

ビューレイヤに入る前に、この例のMVC構造を作成しましょう。

モデルレイヤのスニペットコードから始めます。

public class Student implements Serializable {
    private Integer id;
    private String name;
   //standard contructors, getters, and setters
}

モデルをロードしてそれをビューレイヤに返すためのコントローラメソッドも提供しましょう。

@GetMapping("/listStudents")
public String listStudent(Model model) {
    model.addAttribute("students", StudentUtils.buildStudents());
    return "listStudents.html";
}

上記のサンプルでは、​​

__ buildStudents()メソッドは単に

Student

オブジェクトのリストを返し、それを次に

model__に追加します。


4

th:each

属性

Thymeleafでは、反復は

__th:each

__attributeを使用して行われます。

この属性に関する興味深い点の1つは、次のようにいくつかの異なるデータ型を受け入れて反復することです。


  • java.util.Iterable

    を実装しているオブジェクト


  • java.util.Map

    を実装しているオブジェクト

  • 配列

  • 他のオブジェクトは、単一値リストであるかのように扱われます。

1つの要素を含む

それでは、上の例で設定したデータを使って____th:each属性を呼び出しましょう。

<tr th:each="student: ${students}">
    <td th:text="${student.id}"/>
    <td th:text="${student.name}"/>
</tr>

コードスニペットは

th:each

を示し、

Students

のリストを繰り返します。

model属性は

__ $ \ {}


notation


を使ってアクセスされ、リストの各要素は

student

__変数を介してループの本体に渡されます。


5状況変数

Thymeleafはまた、ステータス変数を介して反復プロセスを追跡するための便利なメカニズムを可能にします。

status変数は以下のプロパティを提供します。


  • index

    :0(ゼロ)から始まる現在の繰り返しインデックス


  • count

    :これまでに処理された要素の数


  • size

    :リスト内の要素の総数


  • even/odd

    :現在の繰り返しインデックスが偶数か奇数かをチェックします


  • first

    :現在の反復が最初の反復であるかどうかを確認します


  • last

    :現在の繰り返しが最後の繰り返しかどうかを調べる

この例では、status変数がどのように機能するのかを見てみましょう。

<tr
  th:each="student, iStat : ${students}"
  th:style="${iStat.odd}? 'font-weight: bold;'"
  th:alt-title="${iStat.even}? 'even' : 'odd'">
    <td th:text="${student.id}"/>
    <td th:text="${student.name}"/>
</tr>

ここでは、条件を評価し、現在の行に太字のスタイルを設定するために

iStat.odd

プロパティを含めました。次の評価でも同じことが行われますが、今回はalt/title HTML属性を介して値を出力するために

__iStat.even

__を使用しています。

明示的なステータス変数の作成(この例では

iStat

として表示されている)を省略した場合、


studentStat ** を使用するだけでステータス変数を呼び出すことができます。


6. 結論

この記事では、Thymeleafライブラリによって提供される多くの機能のうちの1つを調べました。

Thymeleafでは、

th:each

という属性と、すぐに使用可能なプロパティを使用して繰り返し処理を行いました。

この記事に示されているコードの実用版は、https://github.com/eugenp/tutorials/tree/master/spring-thymeleaf[GitHub repository]にあります。