Iterasi di Thymeleaf

1. Ikhtisar

Thymeleaf adalah mesin template Java serbaguna untuk memproses dokumen XML, XHTML dan HTML5 .

Dalam tutorial singkat ini, kita akan melihat bagaimana kita dapat melakukan iterasi dengan Thymeleaf, bersama dengan beberapa fitur lain yang disediakan oleh perpustakaan.

Untuk informasi lebih lanjut tentang Thymeleaf, lihat artikel pengantar kami di sini.

2. Ketergantungan Maven

Untuk membuat contoh ini, kita akan menggunakan pustaka Spring Framework bersama dengan pustaka Thymeleaf.

Di sini kita dapat melihat ketergantungan kita (thymeleaf dan thymeleaf-spring):

 org.thymeleaf thymeleaf 3.0.11.RELEASE   org.thymeleaf thymeleaf-spring5 3.0.11.RELEASE 

3. Contoh Set-up

Sebelum kita melompat ke lapisan tampilan, mari buat struktur MVC untuk contoh kita.

Dimulai dengan kode cuplikan lapisan model:

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

Mari juga berikan metode pengontrol yang bertanggung jawab untuk memuat model dan mengembalikannya ke lapisan tampilan:

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

Dalam contoh kami di atas, metode buildStudents () hanya mengembalikan daftar objek Student yang kemudian kami tambahkan ke model .

4. The th: setiap Atribut

Di Thymeleaf, iterasi dicapai dengan menggunakan atribut th: each .

Salah satu hal menarik tentang atribut ini adalah ia akan menerima dan melakukan iterasi pada beberapa tipe data yang berbeda , seperti:

  • objek yang mengimplementasikan java.util.Iterable
  • objek yang mengimplementasikan java.util.Map
  • array
  • objek lain apa pun diperlakukan seolah-olah itu adalah daftar bernilai tunggal yang berisi satu elemen

Sekarang mari panggil th: setiap atribut dengan data yang kita siapkan dalam contoh di atas:

Potongan kode menunjukkan th: masing-masing iterasi atas daftar Siswa kami . Atribut model diakses menggunakan notasi $ {} , dan setiap elemen daftar diteruskan ke badan perulangan melalui variabel siswa .

5. Variabel Status

Thymeleaf juga memungkinkan mekanisme yang berguna untuk melacak proses iterasi melalui variabel status .

Variabel status menyediakan properti berikut:

  • index : indeks iterasi saat ini, dimulai dengan 0 (nol)
  • hitung : jumlah elemen yang diproses sejauh ini
  • size [ukuran] : jumlah total elemen dalam daftar
  • genap / ganjil : memeriksa apakah indeks iterasi saat ini genap atau ganjil
  • first : memeriksa apakah iterasi saat ini adalah yang pertama
  • last : memeriksa apakah iterasi saat ini adalah yang terakhir

Mari kita lihat bagaimana variabel status bekerja dalam contoh kita:

Di sini, kami menyertakan properti iStat.odd untuk mengevaluasi kondisi dan menyetel gaya tebal untuk baris saat ini. Hal yang sama dilakukan pada evaluasi berikutnya, tetapi kali ini kami menggunakan iStat. Bahkan untuk mencetak nilai melalui atribut HTML alt / title.

Jika kita menghilangkan pembuatan eksplisit variabel status (disajikan sebagai iStat dalam contoh kita), kita dapat memanggil variabel status kita hanya dengan menggunakan studentStat , yang merupakan agregasi dari variabel siswa dengan akhiran Stat.

6. Kesimpulan

Pada artikel ini, kami telah menjelajahi salah satu dari banyak fitur yang disediakan oleh perpustakaan Thymeleaf.

Kami mempresentasikan iterasi di Thymeleaf dengan menggunakan atribut th: each , bersama dengan properti out-of-the-box-nya.

Versi yang berfungsi dari kode yang ditunjukkan di artikel ini tersedia di repositori GitHub kami.