Iteratie in Thymeleaf

1. Overzicht

Thymeleaf is een veelzijdige Java-sjabloonengine voor het verwerken van XML-, XHTML- en HTML5-documenten.

In deze korte tutorial bekijken we hoe we iteratie kunnen uitvoeren met Thymeleaf, samen met enkele andere functies die door de bibliotheek worden geboden.

Bekijk hier ons inleidende artikel voor meer informatie over Thymeleaf.

2. Maven afhankelijkheden

Om dit voorbeeld te maken, gebruiken we Spring Framework-bibliotheken samen met Thymeleaf-bibliotheken.

Hier kunnen we onze afhankelijkheden zien (thymeleaf en thymeleaf-spring):

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

3. Voorbeeldconfiguratie

Laten we, voordat we naar de weergavelaag springen, de MVC-structuur voor ons voorbeeld maken.

Beginnend met de fragmentcode van de modellaag:

openbare klasse Student implementeert Serializable {privé Integer-id; private String naam; // standaard constructeurs, getters en setters}

Laten we ook de controllermethode geven die verantwoordelijk is voor het laden van het model en het terugbrengen naar de weergavelaag:

@GetMapping ("/ listStudents") openbare String listStudent (Modelmodel) {model.addAttribute ("students", StudentUtils.buildStudents ()); retourneer "listStudents.html"; }

In ons voorbeeld hierboven de buildStudents () methode retourneert eenvoudig een lijst met Leerling objecten die we vervolgens toevoegen aan de model-.

4. De th: elk Attribuut

In Thymeleaf wordt iteratie bereikt door de th: elk attribuut.

Een van de interessante dingen aan dit attribuut is dat het zal enkele verschillende gegevenstypen accepteren en herhalen, zoals:

  • objecten implementeren java.util.Iterable
  • objecten implementeren java.util.Map
  • arrays
  • elk ander object wordt behandeld alsof het een lijst met één waarde is die één element bevat

Laten we nu het th: elk kenmerk met de gegevens die we in ons voorbeeld hierboven hebben ingesteld:

Het codefragment toont het th: elk itereren over onze lijst met Studenten. Het modelattribuut is toegankelijk met de ${} notatie, en elk element van de lijst wordt via de leerling variabele.

5. Statusvariabele

Thymeleaf ook maakt een handig mechanisme mogelijk om het iteratieproces bij te houden via de statusvariabele.

De statusvariabele biedt de volgende eigenschappen:

  • inhoudsopgave: de huidige iteratie-index, beginnend met 0 (nul)
  • tellen: het aantal tot nu toe verwerkte elementen
  • grootte: het totale aantal elementen in de lijst
  • even / oneven: controleert of de huidige iteratie-index even of oneven is
  • eerste: controleert of de huidige iteratie de eerste is
  • laatste: controleert of de huidige iteratie de laatste is

Laten we eens kijken hoe de statusvariabele werkt in ons voorbeeld:

Hier hebben we de iStat.odd eigenschap om de voorwaarde te evalueren en een vetgedrukte stijl in te stellen voor de huidige rij. Hetzelfde wordt gedaan bij de volgende evaluatie, maar deze keer gebruiken we iStat.even om een ​​waarde af te drukken via het alt / title HTML-attribuut.

In het geval dat we de expliciete creatie van statusvariabele weglaten (weergegeven als iStat in ons voorbeeld), we zouden onze statusvariabele kunnen aanroepen door simpelweg de studentStat, dat is de aggregatie van de variabele leerling met het achtervoegsel Stat.

6. Conclusie

In dit artikel hebben we een van de vele functies van de Thymeleaf-bibliotheek onderzocht.

We presenteerden iteratie in Thymeleaf met behulp van het attribuut th: elk, samen met zijn kant-en-klare eigenschappen.

Een werkende versie van de code die in dit artikel wordt getoond, is beschikbaar in onze GitHub-repository.