Introduksjon til bruk av Thymeleaf om våren

1. Introduksjon

Thymeleaf er en Java-malmotor for behandling og oppretting av HTML, XML, JavaScript, CSS og tekst.

I denne artikkelen vil vi diskutere hvordan du bruker Thymeleaf med våren sammen med noen grunnleggende brukstilfeller i visningslaget til et Spring MVC-program.

Biblioteket er ekstremt utvidbart, og dets naturlige maleregenskaper sikrer at maler kan prototypes uten back-end - noe som gjør utviklingen veldig rask sammenlignet med andre populære malmotorer som JSP.

2. Integrering av Thymeleaf med våren

La oss først se konfigurasjonene som kreves for å integrere med Spring. De thymeleaf-våren biblioteket kreves for integrasjonen.

Legg til følgende avhengigheter i Maven POM-filen:

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

Merk at, for et Spring 4-prosjekt, thymeleaf-spring4 biblioteket må brukes i stedet for thymeleaf-spring5.

De SpringTemplateEngine klasse utfører alle konfigurasjonstrinnene. Du kan konfigurere denne klassen som en bønne i Java-konfigurasjonsfilen:

@Bean @Description ("Thymeleaf Template Resolver") offentlig ServletContextTemplateResolver templateResolver () {ServletContextTemplateResolver templateResolver = ny ServletContextTemplateResolver (); templateResolver.setPrefix ("/ WEB-INF / views /"); templateResolver.setSuffix (". html"); templateResolver.setTemplateMode ("HTML5"); returmalResolver; } @Bean @Description ("Thymeleaf Template Engine") offentlig SpringTemplateEngine templateEngine () {SpringTemplateEngine templateEngine = new SpringTemplateEngine (); templateEngine.setTemplateResolver (templateResolver ()); templateEngine.setTemplateEngineMessageSource (messageSource ()); returmalMotor; }

De malResolver bønneegenskaper prefiks og suffiks angi plasseringen til visningssidene i webapp katalog og filtypenavn, henholdsvis.

De ViewResolver grensesnitt i Spring MVC kartlegger visningsnavnene som returneres av en kontroller til faktiske visningsobjekter. ThymeleafViewResolver implementerer ViewResolver grensesnitt og brukes til å bestemme hvilke Thymeleaf-visninger som skal gjengis, gitt et visningsnavn.

Det siste trinnet i integrasjonen er å legge til ThymeleafViewResolver som en bønne:

@Bean @Description ("Thymeleaf View Resolver") offentlig ThymeleafViewResolver viewResolver () {ThymeleafViewResolver viewResolver = ny ThymeleafViewResolver (); viewResolver.setTemplateEngine (templateEngine ()); viewResolver.setOrder (1); return viewResolver; }

3. Thymeleaf in Spring Boot

Vårstøvel gir automatisk konfigurasjon for Thymeleaf ved å legge til spring-boot-starter-thymeleaf avhengighet:

 org.springframework.boot spring-boot-starter-thymeleaf 2.3.3.RELEASE 

Ingen eksplisitt konfigurasjon er nødvendig. Som standard skal HTML-filer plasseres i ressurser / maler plassering.

4. Vise verdier fra meldingskilde (eiendomsfiler)

De th: text = ”# {key}” tag-attributt kan brukes til å vise verdier fra eiendomsfiler. For at dette skal fungere må eiendomsfilen konfigureres som messageSource bønne:

@Bean @Description ("Spring Message Resolver") offentlig ResourceBundleMessageSource messageSource () {ResourceBundleMessageSource messageSource = ny ResourceBundleMessageSource (); messageSource.setBasename ("meldinger"); returmeldingKilde; }

Her er Thymeleaf HTML-koden for å vise verdien som er knyttet til nøkkelen velkomstmelding:

5. Vise modellattributter

5.1. Enkle attributter

De th: text = ”$ {attributename}” tag-attributt kan brukes til å vise verdien av modellattributter. La oss legge til et modellattributt med navnet serverTime i kontrollerklassen:

model.addAttribute ("serverTime", dateFormat.format (new Date ()));

HTML-koden for å vise verdien av serverTime Egenskap:

Nåværende tid er 

5.2. Samlingsattributter

Hvis modellattributtet er en samling objekter, blir th: hver tag-attributt kan brukes til å gjenta det. La oss definere en Student modellklasse med to felt, id, og Navn:

offentlig klasse Studentredskaper Serialiserbar {privat heltal id; privat strengnavn; // standard getters og setters}

Nå vil vi legge til en liste over studenter som modellattributt i kontrollerklassen:

Liste studenter = ny ArrayList (); // logikk for å bygge studentdatamodell.addAttribute ("studenter", studenter);

Til slutt kan vi bruke Thymeleaf malkode til å gjenta over listen over studenter og vise alle feltverdiene:

6. Betinget evaluering

6.1. hvis og med mindre

De th: if = ”$ {condition}” attributt brukes til å vise en del av visningen hvis vilkåret er oppfylt. De t: med mindre = ”$ {condition}” attributt brukes til å vise en del av visningen hvis betingelsen ikke er oppfylt.

Legg til en kjønn felt til Student modell:

offentlig klasse Studentredskaper Serialiserbar {privat heltal id; privat strengnavn; privat karakter kjønn; // standard getters og setters}

Anta at dette feltet har to mulige verdier (M eller F) for å indikere studentens kjønn. Hvis vi ønsker å vise ordene "Mann" eller "Kvinne" i stedet for enkelttegnet, kan vi oppnå dette ved å bruke følgende Thymeleaf-kode:

6.2. bytte om og sak

De th: bytte og th: sak attributter brukes til å vise innhold betinget ved å bruke bryteroppgavestrukturen.

Den forrige koden kan skrives om med th: bytte og th: sak attributter:

7. Håndtering av brukerinngang

Skjemainndata kan håndteres ved hjelp av th: action = ”@ {url}” og th: object = ”$ {object}” attributter. De th: handling brukes til å oppgi URL-skjema for handling th: objekt brukes til å spesifisere et objekt som de innsendte skjemadataene vil være bundet til. Individuelle felt kartlegges ved hjelp av th: field = ”* {name}” attributt, der Navn er den samsvarende egenskapen til objektet.

For Student klasse, kan vi lage et inngangsskjema:

I koden ovenfor, / saveStudent er URL-adressen til skjemahandling og a student er objektet som inneholder skjemadataene som er sendt inn.

De StudentController klasse håndterer skjemainnlevering:

@Controller public class StudentController {@RequestMapping (value = "/ saveStudent", method = RequestMethod.POST) public String saveStudent (@ModelAttribute Student student, BindingResult-feil, modellmodell) {// logikk for å behandle inngangsdata}}

I koden ovenfor er @RequestMapping merknader kartlegger kontrollermetoden med URL gitt i skjemaet. Den kommenterte metoden saveStudent () utfører den nødvendige behandlingen for det innsendte skjemaet. De @ModelAttribute merknad binder skjemafeltene til student gjenstand.

8. Viser valideringsfeil

De # fields.hasErrors () funksjonen kan brukes til å sjekke om et felt har noen valideringsfeil. De # fields.errors () funksjon kan brukes til å vise feil for et bestemt felt. Feltnavnet er inngangsparameteren for begge disse funksjonene.

HTML-kode for å gjenta og vise feilene for hvert av feltene i skjemaet:

I stedet for feltnavn godtar funksjonene ovenfor jokertegnet * eller konstanten alle for å indikere alle felt. De th: hver attributt brukes til å gjenta flere feil som kan være til stede for hvert av feltene.

Den forrige HTML-koden ble omskrevet med jokertegnet *:

eller bruke konstanten alle:

På samme måte kan globale feil på våren vises ved hjelp av global konstant.

HTML-koden for å vise globale feil:

De th: feil attributt kan også brukes til å vise feilmeldinger. Den forrige koden for å vise feil i skjemaet kan skrives om ved hjelp av th: feil Egenskap:

9. Bruke konverteringer

Syntaksen med dobbel brakett {{}} brukes til å formatere data for visning. Dette gjør bruk av formatører konfigurert for den typen felt i conversionService bønne av kontekstfilen.

Navnefeltet i Student klasse er formatert:

Ovennevnte kode bruker NameFormatter klasse, konfigurert ved å overstyre addFormatters () metoden fra WebMvcConfigurer grensesnitt. For dette formålet, vår @Konfigurasjon klasse overstyrer WebMvcConfigurerAdapter klasse:

@Configuration public class WebMVCConfig utvider WebMvcConfigurerAdapter {// ... @Override @Description ("Custom Conversion Service") public void addFormatters (FormatterRegistry registry) {registry.addFormatter (new NameFormatter ()); }}

De NameFormatter klasse implementerer våren Formaterer grensesnitt.

De #konverteringer verktøyet kan også brukes til å konvertere objekter til visning. Syntaksen for verktøyfunksjonen er # conversions.convert (Object, Class) hvor Gjenstand konverteres til Klasse type.

Å vise student gjenstand prosentdel felt med brøkdelen fjernet:

10. Konklusjon

I denne veiledningen har vi sett hvordan vi kan integrere og bruke Thymeleaf i et Spring MVC-program.

Vi har også sett eksempler på hvordan du viser felt, godtar inndata, viser valideringsfeil og konverterer data for visning. En fungerende versjon av koden vist i denne artikkelen er tilgjengelig i et GitHub-arkiv.


$config[zx-auto] not found$config[zx-overlay] not found