Thymeleafでの繰り返し

Thymeleafでの反復

1. 概要

Thymeleafa versatile Java template engine for processing XML, XHTML and HTML5 documentsです。

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

Thymeleafの詳細については、紹介記事hereをご覧ください。

2. Mavenの依存関係

この例を作成するために、SpringFrameworkライブラリをThymeleafライブラリと一緒に使用します。

ここで、依存関係(thymeleafthymeleaf-spring)を確認できます。


    org.thymeleaf
    thymeleaf
    3.0.9.RELEASE


    org.thymeleaf
    thymeleaf-spring5
    3.0.9.RELEASE

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 属性を使用して実現されます。

この属性の興味深い点の1つは、次のようなit will accept and iterate over some different data types,です。

  • java.util.Iterable を実装するオブジェクト

  • java.util.Mapを実装するオブジェクト

  • 配列

  • 他のオブジェクトは、1つの要素を含む単一値のリストであるかのように扱われます

次に、上記の例で設定したデータを使用してth:each attribute を呼び出します。


    
    

コードスニペットは、Studentsのリストを反復するth:eachを示しています。 The model attribute is accessed using the $\{} notationであり、リストの各要素はstudent 変数を介してループの本体に渡されます。

5. ステータス変数

Thymeleafもenables a useful mechanism to keep track of the iteration process via the status variableです。

ステータス変数は、次のプロパティを提供します。

  • index:0(ゼロ)で始まる現在の反復インデックス

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

  • size:リスト内の要素の総数

  • even/odd:現在の反復インデックスが偶数か奇数かを確認します

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

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

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


    
    

ここでは、条件を評価し、現在の行に太字のスタイルを設定するために、iStat.oddプロパティを含めました。 次の評価でも同じことが行われますが、今回はiStat.even を使用してalt / titleHTML属性を介して値を出力しています。

ステータス変数(この例ではiStatとして表されます)の明示的な作成を省略した場合、we could invoke our status variable by simply using the*studentStat*, は、変数studentと接尾辞Stat.の集合です。 )s

6. 結論

この記事では、Thymeleafライブラリが提供する多くの機能の1つについて説明しました。

属性th:eachとそのすぐに使用可能なプロパティを使用して、Thymeleafで反復を提示しました。

この記事に示されているコードの動作バージョンは、GitHub repositoryで入手できます。