Iteration i Thymeleaf

1. Oversigt

Thymeleaf er en alsidig Java-skabelonmotor til behandling af XML-, XHTML- og HTML5-dokumenter.

I denne hurtige vejledning ser vi på, hvordan vi kan udføre iteration med Thymeleaf sammen med nogle andre funktioner, der leveres af biblioteket.

For mere information om Thymeleaf, se vores indledende artikel her.

2. Maven-afhængigheder

For at oprette dette eksempel bruger vi Spring Framework-biblioteker sammen med Thymeleaf-biblioteker.

Her kan vi se vores afhængigheder (thymeleaf og thymeleaf-spring):

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

3. Eksempel på opsætning

Før vi hopper ind i visningslaget, skal vi oprette MVC-strukturen til vores eksempel.

Fra og med kodestykket for modelaget:

offentlig klasse Elevimplementer Serialiserbar {privat heltal id; privat strengnavn; // standardkonstruktører, getters og settere}

Lad os også give den controller-metode, der er ansvarlig for at indlæse modellen og returnere den til visningslaget:

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

I vores prøve ovenfor buildStudents () metode returnerer simpelthen en liste over Studerende objekter, som vi derefter tilføjer til model.

4. Det th: hver Attribut

I Thymeleaf opnås iteration ved hjælp af th: hver attribut.

En af de interessante ting ved denne attribut er, at det accepterer og gentages over forskellige datatyper, såsom:

  • genstande, der implementeres java.util.Iterable
  • genstande, der implementeres java.util.Kort
  • arrays
  • ethvert andet objekt behandles som om det var en liste med en enkelt værdi, der indeholder et element

Lad os påberåbe os th: hver attribut med de data, vi oprettede i vores eksempel ovenfor:

Kodestykket viser th: hver itererer over vores liste over Studerende. Modelattributten tilgås ved hjælp af ${} notation, og hvert element på listen sendes til sløjfens krop via studerende variabel.

5. Statusvariabel

Thymeleaf også muliggør en nyttig mekanisme til at holde styr på iterationsprocessen via statusvariablen.

Statusvariablen giver følgende egenskaber:

  • indeks: det aktuelle iterationsindeks, der starter med 0 (nul)
  • tælle: antallet af behandlede elementer indtil videre
  • størrelse: det samlede antal elementer på listen
  • lige / ulige: kontrollerer, om det aktuelle iterationsindeks er lige eller ulige
  • først: kontrollerer, om den aktuelle iteration er den første
  • sidst: kontrollerer, om den aktuelle iteration er den sidste

Lad os se, hvordan statusvariablen fungerer i vores eksempel:

Her inkluderede vi iStat.odd egenskab til at evaluere betingelsen og indstille en fed stil til den aktuelle række. Det samme gøres ved den næste evaluering, men denne gang bruger vi iStat. selv for at udskrive en værdi via alt / title HTML-attribut.

Hvis vi udelader den eksplicitte oprettelse af statusvariabel (præsenteret som iStat i vores eksempel), vi kunne påberåbe os vores statusvariabel ved blot at bruge studentStat, som er sammenlægningen af ​​variablen studerende med suffikset Stat.

6. Konklusion

I denne artikel har vi udforsket en af ​​de mange funktioner, der leveres af Thymeleaf-biblioteket.

Vi præsenterede iteration i Thymeleaf ved hjælp af attributten th: hversammen med dets out-of-the-box egenskaber.

En fungerende version af koden vist i denne artikel er tilgængelig i vores GitHub-arkiv.