Iterazione in Thymeleaf

1. Panoramica

Thymeleaf è un versatile motore di modelli Java per l'elaborazione di documenti XML, XHTML e HTML5 .

In questo breve tutorial, daremo un'occhiata a come possiamo eseguire l'iterazione con Thymeleaf, insieme ad alcune altre funzionalità fornite dalla libreria.

Per ulteriori informazioni su Thymeleaf, dai un'occhiata al nostro articolo introduttivo qui.

2. Dipendenze di Maven

Per creare questo esempio, utilizzeremo le librerie Spring Framework insieme alle librerie Thymeleaf.

Qui possiamo vedere le nostre dipendenze (foglia di timo e foglia di timo):

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

3. Configurazione di esempio

Prima di passare al livello di visualizzazione, creiamo la struttura MVC per il nostro esempio.

A partire dallo snippet di codice del livello del modello:

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

Forniamo anche il metodo del controller responsabile del caricamento del modello e della sua restituzione al livello di visualizzazione:

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

Nel nostro esempio sopra, il metodo buildStudents () restituisce semplicemente un elenco di oggetti Student che poi aggiungiamo al modello .

4. Il th: ogni attributo

In Thymeleaf, l'iterazione si ottiene utilizzando l' attributo th: each .

Una delle cose interessanti di questo attributo è che accetterà e itererà su alcuni diversi tipi di dati , come ad esempio:

  • oggetti che implementano java.util.Iterable
  • oggetti che implementano java.util.Map
  • array
  • qualsiasi altro oggetto viene trattato come se fosse una lista a valore singolo contenente un elemento

Ora invochiamo l' attributo th: each con i dati che abbiamo impostato nel nostro esempio sopra:

Lo snippet di codice mostra il th: ogni iterazione sul nostro elenco di studenti . Si accede all'attributo model usando la notazione $ {} e ogni elemento della lista viene passato al corpo del ciclo tramite la variabile student .

5. Variabile di stato

Thymeleaf consente anche un utile meccanismo per tenere traccia del processo di iterazione tramite la variabile di stato .

La variabile di stato fornisce le seguenti proprietà:

  • index : l'indice di iterazione corrente, a partire da 0 (zero)
  • count : il numero di elementi elaborati finora
  • dimensione : il numero totale di elementi nell'elenco
  • pari / dispari : controlla se l'indice di iterazione corrente è pari o dispari
  • primo : controlla se l'iterazione corrente è la prima
  • last : controlla se l'iterazione corrente è l'ultima

Vediamo come funziona la variabile di stato nel nostro esempio:

Qui, abbiamo incluso la proprietà iStat.odd per valutare la condizione e impostare uno stile in grassetto per la riga corrente. Lo stesso viene fatto nella prossima valutazione, ma questa volta stiamo usando iStat.even per stampare un valore tramite l'attributo HTML alt / title.

Nel caso in cui omettiamo la creazione esplicita della variabile di stato (presentata come iStat nel nostro esempio), potremmo invocare la nostra variabile di stato semplicemente utilizzando studentStat , che è l'aggregazione della variabile student con il suffisso Stat.

6. Conclusione

In questo articolo, abbiamo esplorato una delle tante funzionalità fornite dalla libreria Thymeleaf.

Abbiamo presentato l'iterazione in Thymeleaf utilizzando l'attributo th: each , insieme alle sue proprietà out-of-the-box.

Una versione funzionante del codice mostrato in questo articolo è disponibile nel nostro repository GitHub.