Introduksjon til bruk av FreeMarker i Spring MVC

1. Oversikt

FreeMarker er en Java-basert malmotor fra Apache Software Foundation. Som andre malmotorer er FreeMarker designet for å støtte HTML-websider i applikasjoner som følger MVC-mønsteret. Denne opplæringen illustrerer hvordan konfigurere FreeMarker for bruk i Spring MVC som et alternativ til JSP.

Artikkelen vil ikke diskutere det grunnleggende om bruk av våren MVC. For en grundig titt på det, se denne artikkelen. I tillegg er dette ikke ment å være en detaljert titt på FreeMarkers omfattende evner. For mer informasjon om FreeMarker-bruk og syntaks, besøk nettstedet.

2. Maven-avhengigheter

Siden dette er et Maven-basert prosjekt, legger vi først til de nødvendige avhengighetene til pom.xml:

 org.freemarker freemarker 2.3.23 org.springframework spring-context-support $ {spring.version} 

3. Konfigurasjoner

La oss nå dykke ned i konfigurasjonen av prosjektet. Dette er et kommentarbasert vårprosjekt, så vi vil ikke demonstrere den XML-baserte konfigurasjonen.

3.1. Vårens nettkonfigurasjon

La oss lage en klasse for å konfigurere webkomponenter. For det trenger vi å kommentere klassen med @EnableWebMvc, @Konfigurasjon og @ComponentScan.

@EnableWebMvc @Configuration @ComponentScan ({"com.baeldung.freemarker"}) offentlig klasse SpringWebConfig utvider WebMvcConfigurerAdapter {// All webkonfigurasjon vil gå her. }

3.2. Konfigurer ViewResolver

Våren MVC Framework gir ViewResolvergrensesnitt, som kartlegger visningsnavn til faktisk visning. Vi vil lage en forekomst av FreeMarkerViewResolver, som tilhører vår-webmvc avhengighet.

Det objektet må konfigureres med de nødvendige verdiene som skal brukes i løpetid. For eksempel vil vi konfigurere visningsoppløseren til å bruke FreeMarker for visninger som slutter på .ftl:

@Bean offentlig FreeMarkerViewResolver freemarkerViewResolver () {FreeMarkerViewResolver resolver = ny FreeMarkerViewResolver (); resolver.setCache (true); resolver.setPrefix (""); resolver.setSuffix (". ftl"); retur resolver; }

Legg også merke til hvordan vi også kan kontrollere cachemodus her - dette bør bare deaktiveres for feilsøking og utvikling.

3.3. FreeMarker malbanekonfigurasjon

Deretter vil vi angi malstien, som indikerer hvor malene ligger i nettkonteksten:

@Bean offentlig FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = ny FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / views / ftl /"); returner freeMarkerConfigurer; }

3.4. Vårkontrollerkonfigurasjon

Nå kan vi bruke en vårkontroller til å behandle en FreeMarker-mal for visning. Dette er ganske enkelt en konvensjonell vårkontroller:

@RequestMapping (value = "/ cars", method = RequestMethod.GET) public String init (@ModelAttribute ("model") ModelMap model) {model.addAttribute ("carList", carList); returner "indeks"; }

De FreeMarkerViewResolver og banekonfigurasjoner som er definert tidligere, tar seg av å oversette visningsnavnet indeks til riktig FreeMarker-visning.

4. FreeMarker HTML-mal

4.1. Lag enkel HTML-malvisning

Det er nå på tide å lage en HTML-mal med FreeMarker. I vårt eksempel la vi til en liste over biler til modellen. FreeMarker kan få tilgang til den listen og vise den ved å gjenta over innholdet.

Når det blir bedt om /biler URI, Spring vil behandle malen ved hjelp av modellen den er gitt. I vår mal, den #liste direktivet indikerer at FreeMarker skal løkke over carList objekt fra modellen ved hjelp av bil å referere til det nåværende elementet og gjengi innholdet i den blokken.

Følgende kode inkluderer også FreeMarker uttrykkene å referere til attributtene til hvert element i carList; eller for å vise gjeldende bilelementer gjøre eiendom, bruker vi uttrykket $ {bil.mak}.

FreeMarker Spring MVC Hello World

Legg til bilmerke:

Modell:

GjøreModell
$ {bil.mak}$ {bil.modell}

Etter å ha stylet utdataene med CSS, genererer den bearbeidede FreeMarker-malen et skjema og en liste over biler:

5. Vårstøvel

Hvis vi bruker Spring Boot, kan vi bare importere spring-boot-starter-freemarker avhengighet:

 org.springframework.boot spring-boot-starter-freemarker 2.3.4.RELEASE 

Så må vi bare legge til malfilene våre under src / hoved / ressurser / maler. Spring Boot har ansvaret for andre standardkonfigurasjoner som FreeMarkerConfigurer og FreeMarkerViewResolver.

6. Konklusjon

I denne artikkelen diskuterte vi hvordan vi kan integrere FreeMarker i et Spring MVC-program. FreeMarkers evner går langt utover det vi demonstrerte, så besøk Apache FreeMarker-nettstedet for mer detaljert informasjon om bruken.

Eksempelkoden i denne artikkelen er tilgjengelig i et prosjekt på Github.