Sprievodca po Mustache s Spring Boot

1. Prehľad

V tomto článku sa zameriame na použitie šablón Mustache na výrobu obsahu HTML v aplikáciách Spring Boot.

Je to logický modul šablón na vytváranie dynamického obsahu, ktorý je obľúbený vďaka svojej jednoduchosti.

Ak chcete zistiť základné informácie, prečítajte si náš úvod do článku o kníroch.

2. Závislosť od Maven

Aby sme mohli používať Mustache spolu s Spring Boot, musíme do nášho pridať špeciálny štartér Spring Boot pom.xml:

 org.springframework.boot spring-boot-starter-knír org.springframework.boot spring-boot-starter-web 

Okrem toho potrebujeme závislosť jar-boot-štartér-web.

3. Vytváranie šablón

Ukážme si príklad a pomocou aplikácie Spring-Boot vytvorme jednoduchú aplikáciu MVC, ktorá bude slúžiť článkom na webovej stránke.

Napíšme prvú šablónu pre obsah článku:

 {{#articles}} 

{{publishDate}}

{{autor}}

{{body}}

{{/ articles}}

Tento súbor HTML povedzme uložíme article.html, aa odkáž to v našom index.html:

 {{> rozloženie / článok}} 

Tu je rozloženie je podadresár a článok je názov súboru pre šablónu.

Upozorňujeme, že predvolená prípona súboru so šablónou fúzy je teraz.fúzy. Túto konfiguráciu môžeme prepísať vlastnosťou:

spring.mustache.suffix: .html

4. Kontrolór

Teraz napíšeme kontrolór pre poskytovanie článkov:

@GetMapping ("/ article") public ModelAndView displayArticle (model mapy) {List articles = IntStream.range (0, 10) .mTTOObj (i -> generateArticle ("názov článku" + i)) .collect (Collectors.toList ( )); model.put ("články", články); vrátiť nový ModelAndView ("index", model); }

Kontrolór vráti zoznam článkov, ktoré sa majú na stránke vykresliť. V šablóne článku značka článkov od # a končiac na /, postará sa o zoznam.

Toto bude iterovať po odovzdanom modeli a vykreslí každý prvok zvlášť, rovnako ako v tabuľke HTML:

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

The generovať článok () metóda vytvára Článok napríklad s náhodnými údajmi.

Upozorňujeme, že kľúče v modeli článku vrátené kontrolórom by mali byť rovnaké ako kľúče v kóde článok značky šablón.

Teraz otestujme našu aplikáciu:

@Test public void givenIndexPage_whenContainsArticle_thenTrue () {ResponseEntity entity = this.restTemplate.getForEntity ("/ article", String.class); assertTrue (entity.getStatusCode () .equals (HttpStatus.OK)); assertTrue (entity.getBody () .contains ("Názov článku 0")); }

Aplikáciu môžeme tiež otestovať nasadením pomocou:

mvn spring-boot: spustiť

Po nasadení môžeme udrieť localhost: 8080 / článok, a naše články budú uvedené:

5. Spracovanie predvolených hodnôt

Ak v prostredí Mustache neposkytneme hodnotu pre zástupný symbol, ikona MustacheException bude vyhodený so správou "Žiadna metóda ani pole s názvom" názov premennej ... ".

Aby sa zabránilo takýmto chybám, je lepšie poskytnúť všetkým zástupným symbolom predvolenú globálnu hodnotu:

@Bean public Mustache.Compiler mustacheCompiler (Mustache.TemplateLoader templateLoader, prostredie prostredia) {MustacheEnvironmentCollector collector = nový MustacheEnvironmentCollector (); collector.setEnvironment (prostredie); return Mustache.compiler () .defaultValue ("Some Default Value") .withLoader (templateLoader) .withCollector (collector); }

6. Fúzy s jarným MVC

Teraz poďme diskutovať o tom, ako sa integrovať do Spring MVC, ak sa rozhodneme nepoužívať Spring Boot. Najprv pridajme závislosť:

 com.github.sps.mustache fúzy-jarné zobrazenie 1.4 

Najnovšie nájdete tu.

Ďalej musíme nakonfigurovať MustacheViewResolver namiesto jarných InternalResourceViewResolver:

@Bean public ViewResolver getViewResolver (ResourceLoader resourceLoader) {MustacheViewResolver mustacheViewResolver = nový MustacheViewResolver (); mustacheViewResolver.setPrefix ("/ WEB-INF / zobrazenia /"); mustacheViewResolver.setSuffix (".. fúzy"); mustacheViewResolver.setCache (false); MustacheTemplateLoader mustacheTemplateLoader = nový MustacheTemplateLoader (); mustacheTemplateLoader.setResourceLoader (resourceLoader); mustacheViewResolver.setTemplateLoader (mustacheTemplateLoader); vrátiť fúzyViewResolver; } 

Potrebujeme iba nakonfigurovať prípona, kde sú uložené naše šablóny, predpona rozšírenie našich šablón a templateLoader, ktorý bude zodpovedný za načítanie šablón.

7. Záver

V tomto rýchlom výučbe sme sa pozreli na použitie šablón Mustache s Spring Boot, vykreslenie kolekcie prvkov v používateľskom rozhraní a tiež poskytnutie predvolených hodnôt premenným, aby sme sa vyhli chybám.

Nakoniec sme diskutovali o tom, ako to integrovať s Springom pomocou MustacheViewResolver.

Ako vždy je zdrojový kód k dispozícii na GitHub.


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