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.