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.