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.