Vodič za brkove s proljetnim čizmama

1. Pregled

U ovom ćemo se članku usredotočiti na upotrebu predloške Mustachea za izradu HTML sadržaja u Spring Boot aplikacijama.

To je mehanizam predložaka bez logike za stvaranje dinamičkog sadržaja, koja je popularna zbog svoje jednostavnosti.

Ako želite otkriti osnove, pogledajte naš uvod u članak o brkovima.

2. Ovisnost Mavena

Da bismo mogli koristiti Mustache zajedno s Spring Boot-om, u naš moramo dodati namjenski Spring Boot starter pom.xml:

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

Uz to, trebamo ovisnost o proljetnom pokretanju-pokretaču-webu.

3. Izrada predložaka

Pokažimo primjer i stvorimo jednostavnu MVC aplikaciju pomoću Spring-Boot koja će posluživati ​​članke na web stranici.

Napišimo prvi predložak za sadržaj članka:

 {{#articles}} 

{{objavitiDatum}}

{{Autor}}

{{tijelo}}

{{/ articles}}

Recimo, spremit ćemo ovu HTML datoteku article.html, and preporučite u našem index.html:

 {{> izgled / članak}} 

Evo, raspored je poddirektorij, a članak je naziv datoteke za predložak.

Imajte na umu da je sada zadano proširenje datoteke predloška brkova.brkovi. Ovu konfiguraciju možemo nadjačati sa svojstvom:

proljeće.mustache.sufiks: .html

4. Kontroler

Sada napišimo kontroler za posluživanje članaka:

@GetMapping ("/ article") javni ModelAndView displayArticle (model karte) {Lista članaka = IntStream.range (0, 10) .mapToObj (i -> generiraj članak ("Naslov članka" + i)) .collect (Collectors.toList ( )); model.put ("članci", članci); vrati novi ModelAndView ("indeks", model); }

Kontrolor vraća popis članaka koji će se prikazati na stranici. U predlošku članka, oznaka članaka počevši s # i završavajući na /, brine se o popisu.

To će se ponoviti kroz proslijeđeni model i prikazati svaki element zasebno, baš kao u HTML tablici:

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

The generiraj članak () metoda stvara Članak primjer s nekim slučajnim podacima.

Imajte na umu da bi ključevi u Article Modelu, koje vraća kontroler, trebali biti isti kao i ključevi u članak oznake predloška.

Ajmo sada testirati našu aplikaciju:

@Test javna praznina givenIndexPage_whenContainsArticle_thenTrue () {Entitet ResponseEntity = this.restTemplate.getForEntity ("/ article", String.class); assertTrue (entity.getStatusCode () .equals (HttpStatus.OK)); assertTrue (entity.getBody () .contens ("Naslov članka 0")); }

Aplikaciju također možemo testirati tako da je postavimo sa:

mvn spring-boot: trčanje

Jednom raspoređeni, možemo pogoditi localhost: 8080 / članak, i dobit ćemo naše članke na popisu:

5. Rukovanje zadanim vrijednostima

Ako u okruženju brkova ne pružimo vrijednost rezerviranom mjestu, BrkoviException bit će bačen s porukom "Nema metode ili polja s imenom" ime-varijable ... ".

Da bi se izbjegle takve pogreške, bolje je pružiti zadanu globalnu vrijednost svim rezerviranim mjestima:

@Bean public Mustache.Compiler mustacheCompiler (Mustache.TemplateLoader templateLoader, okoliš okoliša) {MustacheEnvironmentCollector collector = new MustacheEnvironmentCollector (); collector.setEnvironment (okoliš); vratiti Mustache.compiler () .defaultValue ("Neka zadana vrijednost") .withLoader (templateLoader) .withCollector (kolektor); }

6. Brkovi s proljetnim MVC-om

Sada, razgovarajmo o integraciji s Spring MVC ako odlučimo ne koristiti Spring Boot. Prvo, dodajmo ovisnost:

 com.github.sps.mustache brkovi-proljetni pogled 1.4 

Najnovije možete pronaći ovdje.

Dalje, moramo konfigurirati MustacheViewResolver umjesto proljetnog InternalResourceViewResolver:

@Bean public ViewResolver getViewResolver (ResourceLoader resourceLoader) {MustacheViewResolver mustacheViewResolver = novi MustacheViewResolver (); mustacheViewResolver.setPrefix ("/ WEB-INF / views /"); brkoviViewResolver.setSuffix (".. brkovi"); mustacheViewResolver.setCache (false); MustacheTemplateLoader mustacheTemplateLoader = novi MustacheTemplateLoader (); mustacheTemplateLoader.setResourceLoader (resourceLoader); mustacheViewResolver.setTemplateLoader (mustacheTemplateLoader); vratiti brkoveViewResolver; } 

Samo trebamo konfigurirati sufiks, gdje su pohranjeni naši predlošci, prefiks proširenje naših predložaka i templateLoader, koja će biti odgovorna za učitavanje predložaka.

7. Zaključak

U ovom smo brzom vodiču pogledali upotrebu predloške Mustachea s Spring Bootom, generirajući kolekciju elemenata u korisničkom sučelju i također pružajući zadane vrijednosti varijablama kako bi se izbjegle pogreške.

Na kraju smo razgovarali o tome kako ga integrirati s Springom, koristeći MustacheViewResolver.

Kao i uvijek izvorni kod dostupan je na GitHub-u.


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