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.