Guide til overskæg med fjederstøvle

1. Oversigt

I denne artikel fokuserer vi på at bruge overskægsskabeloner til produktion af HTML-indhold i Spring Boot-applikationer.

Det er en logikfri skabelonmotor til oprettelse af dynamisk indhold, som er populær på grund af sin enkelhed.

Hvis du vil finde ud af det grundlæggende, skal du se vores introduktion til artikel overskæg.

2. Maven-afhængighed

For at kunne bruge overskæg sammen med Spring Boot, skal vi tilføje den dedikerede Spring Boot-starter til vores pom.xml:

 org.springframework.boot spring-boot-starter-overskæg org.springframework.boot spring-boot-starter-web 

Derudover har vi brug for afhængighed af spring-boot-starter-web.

3. Oprettelse af skabeloner

Lad os vise et eksempel og oprette en simpel MVC-applikation ved hjælp af Spring-Boot, der serverer artikler på en webside.

Lad os skrive den første skabelon til artiklens indhold:

 {{#artikler}} 

{{publishDate}}

{{forfatter}}

{{legeme}}

{{/artikler}}

Vi gemmer denne HTML-fil, siger artikel.html, enog henvis det til vores index.html:

 {{> layout / artikel}} 

Her, den layout er en underkatalog, og artikel er filnavnet på skabelonfilen.

Bemærk, at standardudvidelsen til overskægsskabelonfilen nu er.overskæg. Vi kan tilsidesætte denne konfiguration med en egenskab:

spring.mustache.suffix: .html

4. Controller

Lad os nu skrive controlleren til betjening af artikler:

@GetMapping ("/ artikel") offentlig ModelAndView displayArticle (kortmodel) {Listeartikler = IntStream.range (0, 10) .mapToObj (i -> genererArtikel ("Artikeltitel" + i)) .collect (Collectors.toList ( )); model.put ("artikler", artikler); returner ny ModelAndView ("indeks", model); }

Controlleren returnerer en liste over artikler, der skal gengives på siden. I artikelskabelonen taggen artikler starter med # og slutter i /, tager sig af listen.

Dette vil gentage den beståede model og gengive hvert element separat ligesom i en HTML-tabel:

 {{#articles}} ... {{/ articles}} 

Det createArticle () metode skaber en Artikel eksempel med nogle tilfældige data.

Bemærk, at nøglerne i artikelmodellen, som returneres af controlleren, skal være de samme som for artikel skabelon tags.

Lad os nu teste vores ansøgning:

@Test offentlig ugyldighed givenIndexPage_whenContainsArticle_thenTrue () {ResponseEntity entity = this.restTemplate.getForEntity ("/ article", String.class); assertTrue (entity.getStatusCode () .equals (HttpStatus.OK)); assertTrue (entity.getBody () .contains ("Artikel titel 0")); }

Vi kan også teste applikationen ved at distribuere den med:

mvn spring-boot: løb

Når vi er implementeret, kan vi ramme localhost: 8080 / artikel, og vi får vores artikler opført:

5. Håndtering af standardværdier

I et overskægs miljø, hvis vi ikke giver en værdi til en pladsholder, er Overskæg undtagelse vil blive kastet med en besked "Ingen metode eller felt med navn" variabelnavn ... ".

For at undgå sådanne fejl er det bedre at give en standardværdi til alle pladsholdere:

@Bean public Mustache.Compiler mustacheCompiler (Mustache.TemplateLoader templateLoader, Environment environment) {MustacheEnvironmentCollector collector = new MustacheEnvironmentCollector (); collector.setEnvironment (miljø); returner Mustache.compiler () .defaultValue ("Some Default Value") .withLoader (templateLoader) .withCollector (collector); }

6. Overskæg med fjeder-MVC

Lad os nu diskutere, hvordan vi kan integrere med Spring MVC, hvis vi beslutter ikke at bruge Spring Boot. Lad os først tilføje afhængigheden:

 com.github.sps.mustache overskæg-spring-view 1.4 

Det seneste kunne findes her.

Dernæst skal vi konfigurere MustacheViewResolver i stedet for forårets InternalResourceViewResolver:

@Bean public ViewResolver getViewResolver (ResourceLoader resourceLoader) {MustacheViewResolver mustacheViewResolver = ny MustacheViewResolver (); mustacheViewResolver.setPrefix ("/ WEB-INF / visninger /"); mustacheViewResolver.setSuffix (".. overskæg"); mustacheViewResolver.setCache (falsk); MustacheTemplateLoader mustacheTemplateLoader = ny MustacheTemplateLoader (); mustacheTemplateLoader.setResourceLoader (resourceLoader); mustacheViewResolver.setTemplateLoader (mustacheTemplateLoader); returner mustacheViewResolver; } 

Vi skal bare konfigurere suffiks, hvor vores skabeloner er gemt, præfiks udvidelsen af ​​vores skabeloner og skabelonLader, som er ansvarlig for indlæsning af skabeloner.

7. Konklusion

I denne hurtige vejledning kiggede vi på brug af overskægsskabeloner med Spring Boot, gengivelse af en samling af elementer i brugergrænsefladen og også levering af standardværdier til variabler for at undgå fejl.

Endelig diskuterede vi, hvordan man integrerer det med Spring ved hjælp af MustacheViewResolver.

Som altid er kildekoden tilgængelig på GitHub.


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