Guide til bart med vårstøvel

1. Oversikt

I denne artikkelen vil vi fokusere på å bruke Mustache-maler for å produsere HTML-innhold i Spring Boot-applikasjoner.

Det er en logikkfri malmotor for å skape dynamisk innhold, som er populær på grunn av sin enkelhet.

Hvis du vil oppdage det grunnleggende, kan du sjekke introduksjonen til Mustache-artikkelen.

2. Maven avhengighet

For å kunne bruke Mustache sammen med Spring Boot, må vi legge til den dedikerte Spring Boot-starteren til vår pom.xml:

 org.springframework.boot spring-boot-starter-mustache org.springframework.boot spring-boot-starter-web 

I tillegg trenger vi avhengigheten av vår-boot-starter-web.

3. Opprette maler

La oss vise et eksempel og lage en enkel MVC-applikasjon ved hjelp av Spring-Boot som vil tjene artikler på en webside.

La oss skrive den første malen for artikkelinnholdet:

 {{#articles}} 

{{publishDate}}

{{forfatter}}

{{kropp}}

{{/ articles}}

Vi lagrer denne HTML-filen, si artikkel.html, aog referer det til vår index.html:

 {{> layout / artikkel}} 

Her, den oppsett er en underkatalog, og artikkel er filnavnet for malfilen.

Merk at standard filtypen for bart-mal er nå.bart. Vi kan overstyre denne konfigurasjonen med en eiendom:

spring.mustache.suffix: .html

4. Kontroller

La oss nå skrive kontrolleren for å servere artikler:

@GetMapping ("/ artikkel") offentlig ModelAndView displayArticle (Kartmodell) {Listeartikler = IntStream.range (0, 10) .mapToObj (i -> genererArtikkel ("Artikkel tittel" + i)) .collect (Collectors.toList ( )); model.put ("artikler", artikler); returner ny ModelAndView ("indeks", modell); }

Kontrolleren returnerer en liste over artikler som skal gjengis på siden. I artikkelmalen, taggen artikler starter med # og slutter i /, tar seg av listen.

Dette vil gjentas over den passerte modellen og gjengi hvert element separat, akkurat som i en HTML-tabell:

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

De generereArtikkel () metoden skaper en Artikkel eksempel med noen tilfeldige data.

Merk at nøklene i artikkelmodellen, som returneres av kontrolleren, skal være de samme som for artikkel malmerker.

La oss nå teste søknaden vår:

@Test offentlig tomrom gittIndexPage_whenContainsArticle_thenTrue () {ResponseEntity entity = this.restTemplate.getForEntity ("/ article", String.class); assertTrue (entity.getStatusCode () .equals (HttpStatus.OK)); assertTrue (entity.getBody () .contains ("Artikkel tittel 0")); }

Vi kan også teste applikasjonen ved å distribuere den med:

mvn spring-boot: run

Når vi er utplassert, kan vi slå localhost: 8080 / artikkel, og vi får artiklene våre oppført:

5. Håndtering av standardverdier

I et bart miljø, hvis vi ikke gir en verdi for en plassholder, MustacheException vil bli kastet med en melding “Ingen metode eller felt med navn” variabelnavn ... ”.

For å unngå slike feil er det bedre å gi en standard global verdi til alle plassholdere:

@Bean offentlig Mustache.Compiler mustacheCompiler (Mustache.TemplateLoader templateLoader, Miljømiljø) {MustacheEnvironmentCollector collector = ny MustacheEnvironmentCollector (); collector.setEnvironment (miljø); returner Mustache.compiler () .defaultValue ("Noe standardverdi") .withLoader (templateLoader) .withCollector (collector); }

6. bart med våren MVC

La oss nå diskutere hvordan vi kan integrere med Spring MVC hvis vi bestemmer oss for ikke å bruke Spring Boot. La oss først legge til avhengighet:

 com.github.sps.mustache bart-spring-view 1.4 

Det siste finner du her.

Deretter må vi konfigurere MustacheViewResolver i stedet for vårens InternalResourceViewResolver:

@Bean public ViewResolver getViewResolver (ResourceLoader resourceLoader) {MustacheViewResolver mustacheViewResolver = ny MustacheViewResolver (); mustacheViewResolver.setPrefix ("/ WEB-INF / views /"); mustacheViewResolver.setSuffix (".. bart"); mustacheViewResolver.setCache (false); MustacheTemplateLoader mustacheTemplateLoader = ny MustacheTemplateLoader (); mustacheTemplateLoader.setResourceLoader (resourceLoader); mustacheViewResolver.setTemplateLoader (mustacheTemplateLoader); returner mustacheViewResolver; } 

Vi trenger bare å konfigurere suffiks, hvor malene våre er lagret, prefiks utvidelsen av malene våre, og malLaster, som vil være ansvarlig for å laste inn maler.

7. Konklusjon

I denne raske opplæringen så vi på å bruke Mustache-maler med Spring Boot, gjengivelse av en samling elementer i brukergrensesnittet og også gi standardverdier til variabler for å unngå feil.

Til slutt diskuterte vi hvordan vi kan integrere det med våren MustacheViewResolver.

Som alltid er kildekoden tilgjengelig på GitHub.


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