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øre Modell $ {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.