Thymeleafでの反復
1. 概要
2. Mavenの依存関係
この例を作成するために、SpringFrameworkライブラリをThymeleafライブラリと一緒に使用します。
ここで、依存関係(thymeleafとthymeleaf-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で入手できます。