Inleiding tot het gebruik van FreeMarker in Spring MVC

1. Overzicht

FreeMarker is een op Java gebaseerde sjabloonengine van de Apache Software Foundation. Net als andere sjabloonengines is FreeMarker ontworpen om HTML-webpagina's te ondersteunen in toepassingen die het MVC-patroon volgen. Deze tutorial laat zien hoe configureer FreeMarker voor gebruik in Spring MVC als alternatief voor JSP.

Het artikel gaat niet in op de basisprincipes van het gebruik van Spring MVC. Raadpleeg dit artikel voor een diepgaande blik. Bovendien is dit niet bedoeld als een gedetailleerde kijk op de uitgebreide mogelijkheden van FreeMarker. Bezoek de website voor meer informatie over het gebruik en de syntaxis van FreeMarker.

2. Maven afhankelijkheden

Aangezien dit een op Maven gebaseerd project is, voegen we eerst de vereiste afhankelijkheden toe aan het pom.xml:

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

3. Configuraties

Laten we nu eens kijken naar de configuratie van het project. Dit is een op annotaties gebaseerd Spring-project, dus we zullen de op XML gebaseerde configuratie niet demonstreren.

3.1. Spring Web-configuratie

Laten we een klasse maken om webcomponenten te configureren. Daarvoor moeten we de klas annoteren met @EnableWebMvc, @Configuratie en @BuienRadarNL.

@EnableWebMvc @Configuration @ComponentScan ({"com.baeldung.freemarker"}) openbare klasse SpringWebConfig breidt WebMvcConfigurerAdapter uit {// Alle webconfiguratie komt hier. }

3.2. Configureer ViewResolver

Spring MVC Framework biedt het ViewResolverinterface, die weergavenamen koppelt aan werkelijke weergaven. We maken een instantie van FreeMarkerViewResolver, die toebehoort aan lente-webmvc afhankelijkheid.

Dat object moet worden geconfigureerd met de vereiste waarden die tijdens runtime worden gebruikt. We zullen bijvoorbeeld de view resolver configureren om FreeMarker te gebruiken voor views die eindigen op .ftl:

@Bean openbare FreeMarkerViewResolver freemarkerViewResolver () {FreeMarkerViewResolver resolver = nieuwe FreeMarkerViewResolver (); resolver.setCache (true); resolver.setPrefix (""); resolver.setSuffix (". ftl"); return resolver; }

Merk ook op hoe we hier ook de cachemodus kunnen regelen - deze mag alleen worden uitgeschakeld voor foutopsporing en ontwikkeling.

3.3. Configuratie van FreeMarker-sjabloonpad

Vervolgens stellen we het sjabloonpad in, dat aangeeft waar de sjablonen zich in de webcontext bevinden:

@Bean openbaar FreeMarkerConfigurer freemarkerConfig () {FreeMarkerConfigurer freeMarkerConfigurer = nieuwe FreeMarkerConfigurer (); freeMarkerConfigurer.setTemplateLoaderPath ("/ WEB-INF / views / ftl /"); retourneer freeMarkerConfigurer; }

3.4. Spring Controller Configuratie

Nu kunnen we een Spring Controller gebruiken om een FreeMarker-sjabloon verwerken voor weergave. Dit is gewoon een conventionele veercontroller:

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

De FreeMarkerViewResolver en padconfiguraties die eerder zijn gedefinieerd, zorgen voor de vertaling van de weergavenaam inhoudsopgave naar de juiste FreeMarker-weergave.

4. FreeMarker HTML-sjabloon

4.1. Maak een eenvoudige HTML-sjabloonweergave

Het is nu tijd om een HTML-sjabloon met FreeMarker. In ons voorbeeld hebben we een lijst met auto's aan het model toegevoegd. FreeMarker heeft toegang tot die lijst en kan deze weergeven door de inhoud ervan te herhalen.

Wanneer een verzoek wordt ingediend voor het / auto's URI, Spring zal de sjabloon verwerken met behulp van het model dat het wordt verstrekt. In onze sjabloon is de #lijst richtlijn geeft aan dat FreeMarker over het carList object uit het model, gebruikend auto om naar het huidige element te verwijzen en de inhoud binnen dat blok weer te geven.

De volgende code bevat ook FreeMarker uitdrukkingen om te verwijzen naar de attributen van elk element in carList; of bijvoorbeeld om de huidige auto-elementen weer te geven maken eigenschap, gebruiken we de uitdrukking $ {car.make}.

FreeMarker Spring MVC Hallo wereld

Voeg automerk toe:

Model:

MakenModel
$ {car.make}$ {auto.model}

Na het stylen van de uitvoer met CSS, genereert de verwerkte FreeMarker-sjabloon een formulier en een lijst met auto's:

5. Veerboot

Als we Spring Boot gebruiken, kunnen we eenvoudig het spring-boot-starter-freemarker afhankelijkheid:

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

Dan hoeven we alleen maar onze sjabloonbestanden toe te voegen onder src / main / resources / templates. Spring Boot heeft de leiding over andere standaardconfiguraties zoals FreeMarkerConfigurer en FreeMarkerViewResolver.

6. Conclusie

In dit artikel hebben we besproken hoe u kunt integreren FreeMarker in een Spring MVC-applicatie. De mogelijkheden van FreeMarker gaan veel verder dan wat we hebben gedemonstreerd, dus bezoek de Apache FreeMarker-website voor meer gedetailleerde informatie over het gebruik ervan.

De voorbeeldcode in dit artikel is beschikbaar in een project op Github.