Itération dans Thymeleaf

1. Vue d'ensemble

Thymeleaf est un moteur de template Java polyvalent pour le traitement de documents XML, XHTML et HTML5 .

Dans ce rapide didacticiel, nous verrons comment nous pouvons effectuer une itération avec Thymeleaf, ainsi que d'autres fonctionnalités fournies par la bibliothèque.

Pour plus d'informations sur Thymeleaf, consultez notre article d'introduction ici.

2. Dépendances de Maven

Pour créer cet exemple, nous utiliserons les bibliothèques Spring Framework avec les bibliothèques Thymeleaf.

Ici, nous pouvons voir nos dépendances (thymeleaf et thymeleaf-spring):

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

3. Exemple de configuration

Avant de sauter dans la couche de vue, créons la structure MVC pour notre exemple.

En commençant par l'extrait de code de la couche de modèle:

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

Fournissons également la méthode de contrôleur chargée de charger le modèle et de le renvoyer dans la couche de vue:

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

Dans notre exemple ci-dessus, la méthode buildStudents () renvoie simplement une liste d' objets Student que nous ajoutons ensuite au modèle .

4. Le th: chaque attribut

Dans Thymeleaf, l'itération est réalisée en utilisant l' attribut th: each .

L'une des choses intéressantes à propos de cet attribut est qu'il acceptera et itérera sur différents types de données , tels que:

  • objets implémentant java.util.Iterable
  • objets implémentation de java.util.Map
  • tableaux
  • tout autre objet est traité comme s'il s'agissait d'une liste à valeur unique contenant un élément

Appelons maintenant l'attribut th: each avec les données que nous avons configurées dans notre exemple ci-dessus:

L'extrait de code montre le th: chaque itération sur notre liste d' étudiants . L'attribut model est accessible en utilisant la notation $ {} , et chaque élément de la liste est passé au corps de la boucle via la variable student .

5. Variable d'état

Thymeleaf permet également un mécanisme utile pour suivre le processus d'itération via la variable status .

La variable status fournit les propriétés suivantes:

  • index : l'index d'itération actuel, commençant par 0 (zéro)
  • count : le nombre d'éléments traités jusqu'à présent
  • size : le nombre total d'éléments dans la liste
  • pair / impair : vérifie si l'index d'itération courant est pair ou impair
  • first : vérifie si l'itération courante est la première
  • last : vérifie si l'itération actuelle est la dernière

Voyons comment fonctionne la variable status dans notre exemple:

Ici, nous avons inclus la propriété iStat.odd pour évaluer la condition et définir un style gras pour la ligne actuelle. La même chose est faite lors de la prochaine évaluation, mais cette fois, nous utilisons iStat.even pour imprimer une valeur via l'attribut HTML alt / title.

Dans le cas où nous omettons la création explicite de la variable status (présentée comme iStat dans notre exemple), nous pourrions appeler notre variable status en utilisant simplement studentStat , qui est l'agrégation de la variable student avec le suffixe Stat.

6. Conclusion

Dans cet article, nous avons exploré l'une des nombreuses fonctionnalités fournies par la bibliothèque Thymeleaf.

Nous avons présenté l'itération dans Thymeleaf en utilisant l'attribut th: each , ainsi que ses propriétés prêtes à l'emploi .

Une version fonctionnelle du code présenté dans cet article est disponible dans notre référentiel GitHub.