Útmutató a bajuszhoz a tavaszi csomagtartóval

1. Áttekintés

Ebben a cikkben a Bajusz sablonok használatára összpontosítunk a HTML tartalom előállításához a Spring Boot alkalmazásokban.

Ez egy logika nélküli sablonmotor a dinamikus tartalom létrehozásához, amely egyszerűsége miatt népszerű.

Ha meg akarja fedezni az alapokat, olvassa el a Bajusz cikk bevezetését.

2. Maven-függőség

Ahhoz, hogy a Bajuszt a Spring Boot-tal együtt használhassuk, hozzá kell adnunk a dedikált Spring Boot indítót a programunkhoz pom.xml:

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

Ezenkívül szükségünk van a tavasz-indítás-indító-web függőségre.

3. Sablonok létrehozása

Mutassunk egy példát, és hozzunk létre egy egyszerű MVC alkalmazást a Spring-Boot segítségével, amely cikkeket fog szolgálni egy weboldalon.

Írjuk meg az első sablont a cikk tartalmához:

 {{#cikkek}} 

{{publishDate}}

{{szerző}}

{{test}}

{{/ articles}}

Mondjuk elmentjük ezt a HTML fájlt cikk.html, aés utalja a mi index.html:

 {{> elrendezés / cikk}} 

Itt a elrendezés egy alkönyvtár, és a cikk a sablon fájl neve.

Ne feledje, hogy az alapértelmezett bajusz sablon fájlkiterjesztés most van.bajusz. Ezt a konfigurációt felülírhatjuk egy tulajdonsággal:

tavasz.mustache.suffix: .html

4. Vezérlő

Most írjuk meg a cikkek kiszolgálójának vezérlőjét:

@GetMapping ("/ article") public ModelAndView displayArticle (Térkép modell) {Cikkek listája = IntStream.range (0, 10) .mapToObj (i -> generatorArticle ("Cikk címe" + i)) .collect (Collectors.toList ( )); model.put ("cikkek", cikkek); return new ModelAndView ("index", modell); }

A vezérlő visszaküldi az oldalon megjelenítendő cikkek listáját. A cikk sablonban a címkét cikkeket # -től kezdődően és / -ig végzi a listát.

Ez ismétli az átadott modellt, és minden elemet külön-külön renderel, akárcsak egy HTML-táblázat:

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

A generál cikk () módszer létrehoz egy Cikk például néhány véletlenszerű adattal.

Ne feledje, hogy a cikkmodell kulcsainak, amelyeket a vezérlő visszaad, meg kell egyezniük a kulcsokkal cikk sabloncímkék.

Most teszteljük az alkalmazást:

@Test public void givenIndexPage_whenContainsArticle_thenTrue () {ResponseEntity entitás = this.restTemplate.getForEntity ("/ article", String.class); assertTrue (entitás.getStatusCode () .egyenlő (HttpStatus.OK)); assertTrue (entitás.getBody () .contains ("Cikk 0. címe")); }

Tesztelhetjük az alkalmazást a következők telepítésével is:

mvn spring-boot: fut

Miután bevetjük, üthetünk localhost: 8080 / cikk, és felsoroljuk cikkjeinket:

5. Alapértelmezett értékek kezelése

Bajusz környezetben, ha nem adunk meg értéket egy helyőrzőnek, akkor a MustacheException üzenettel dobják „Nincs metódus vagy mező névvel” változó-név… ”.

Az ilyen hibák elkerülése érdekében jobb, ha alapértelmezett globális értéket ad meg az összes helyőrzőnek:

@Bean public Mustache.Compiler mustacheCompiler (Mustache.TemplateLoader templateLoader, Környezeti környezet) {MustacheEnvironmentCollector collector = új MustacheEnvironmentCollector (); gyűjtő.setKörnyezet (környezet); adja vissza a Mustache.compiler () .defaultValue ("Néhány alapértelmezett érték") .WithLoader (templateLoader) .withCollector (gyűjtő); }

6. Bajusz tavaszi MVC-vel

Most beszéljük meg, hogyan lehet integrálni a Spring MVC-t, ha úgy döntünk, hogy nem használjuk a Spring Boot-ot. Először tegyük hozzá a függőséget:

 com.github.sps.mustache bajache-spring-view 1.4 

A legújabb itt található.

Ezután konfigurálnunk kell MustacheViewResolver tavaszi helyett InternalResourceViewResolver:

@Bean public ViewResolver getViewResolver (ResourceLoader resourceLoader) {MustacheViewResolver mustacheViewResolver = új MustacheViewResolver (); mustacheViewResolver.setPrefix ("/ WEB-INF / nézetek /"); mustacheViewResolver.setSuffix (".. bajusz"); mustacheViewResolver.setCache (hamis); MustacheTemplateLoader mustacheTemplateLoader = új MustacheTemplateLoader (); mustacheTemplateLoader.setResourceLoader (resourceLoader); mustacheViewResolver.setTemplateLoader (bajuszTemplateLoader); return bajacheViewResolver; } 

Csak konfigurálnunk kell a utótag, ahol a sablonjaink vannak tárolva, előtag a sablonjaink kiterjesztése és a templateLoader, amely felelős lesz a sablonok betöltéséért.

7. Következtetés

Ebben a gyors bemutatóban megvizsgáltuk a Bajusz sablonok használatát a Spring Boot alkalmazással, az elemek gyűjteményének megjelenítését a felhasználói felületen, valamint a változók alapértelmezett értékeinek megadását a hibák elkerülése érdekében.

Végül megvitattuk, hogyan lehet integrálni a Spring alkalmazásával MustacheViewResolver.

Mint mindig, a forráskód elérhető a GitHubon.