A Thymeleaf sablonkönyvtár megváltoztatása a tavaszi indításkor

1. Bemutatkozás

A Thymeleaf egy sablonmotor, amelyet a Spring Boot alkalmazásokhoz használhatunk. Mint sok mindennél, A Spring Boot egy alapértelmezett helyet biztosít, ahol elvárja, hogy megtalálja a sablonjainkat.

Ebben a rövid bemutatóban megvizsgáljuk, hogyan változtathatjuk meg a sablon helyét. Miután ezt megtettük, megtanuljuk, hogyan kell több helyszínt használni.

2. Beállítás

A Thymeleaf használatához hozzá kell adnunk a megfelelő Spring Boot indítót a sajátunkhoz pom.xml:

 org.springframework.boot spring-boot-starter-thymeleaf 2.2.2. KÖZLEMÉNY 

3. Az alapértelmezett hely módosítása

Alapértelmezés szerint a Spring Boot itt keresi a sablonjainkat src / main / resources / templates. Sablonjainkat oda helyezhetjük, és alkönyvtárakba rendezhetjük, és nincsenek problémáink.

Most képzeljük el, hogy megköveteljük, hogy az összes sablonunk az úgynevezett könyvtárban legyen sablonok-2.

Hozzunk létre egy sablont a köszönéshez, és tegyük be src / main / resources / templates-2:

    A Thymeleaf-ban található enums 

Üdvözlet a 'sablonok / sablonok-2' oldalról

Szükségünk lesz egy vezérlőre is:

@GetMapping ("/ hello") public String sayHello () {return "hello"; }

Ha ez az alapbeállítás nem megfelelő, állítsuk be a Spring Boot alkalmazást a mi használatunkra sablonok-2 könyvtár egy tulajdonságának felülbírálásával a alkalmazás.tulajdonságok:

spring.thymeleaf.prefix = classpath: / templates-2 /

Most, amikor hívjuk HelloController, meglátjuk üdvözletünket hello.html.

4. Több hely használata

Most, hogy megtanultuk az alapértelmezett hely megváltoztatását, nézzük meg, hogyan használhatunk több sablonhelyet.

Ehhez hozzunk létre egy ClassLoaderTemplateResolver bab:

@Bean public ClassLoaderTemplateResolver SecondaryTemplateResolver () {ClassLoaderTemplateResolver SecondaryTemplateResolver = új ClassLoaderTemplateResolver (); SecondaryTemplateResolver.setPrefix ("templates-2 /"); másodlagosTemplateResolver.setSuffix (". html"); másodlagosTemplateResolver.setTemplateMode (TemplateMode.HTML); másodlagosTemplateResolver.setCharacterEncoding ("UTF-8"); másodlagosTemplateResolver.setOrder (1); SecondaryTemplateResolver.setCheckExistence (true); return másodlagosTemplateResolver; }

Egyedi babunkban az előtagunkat az általunk használt másodlagos sablonkönyvtárba állítjuk: sablonok-2. Beállítottuk a CheckExistance zászló to igaz. Ez a kulcs ahhoz, hogy a megoldók láncban működjenek.

Ezzel a konfigurációval alkalmazásunk alapértelmezés szerint használhat sablonokat fő / források / sablonok könyvtár és main / resources / templates-2.

5. Hibák

Amikor a Thymeleafszel dolgozunk, ezt a hibát láthatjuk:

Hiba történt a [helló] sablon feloldása során. Lehetséges, hogy a sablon nem létezik, vagy lehet, hogy a konfigurált sablonmegoldók nem érik el

Akkor látjuk ezt az üzenetet, amikor a Thymeleaf valamilyen okból nem tudja megtalálni a sablont. Vizsgáljuk meg ennek lehetséges okait, és hogyan lehet ezeket kijavítani.

5.1. Gépelés a vezérlőben

Gyakran láthatjuk ezt a hibát egy egyszerű elírás miatt. Először ellenőrizni kell, hogy a fájlnév mínusz a kiterjesztés és a vezérlőnkben kért sablon pontosan megegyezik. Ha alkönyvtárakat használunk, akkor biztosítanunk kell, hogy azok is helyesek legyenek.

Ezenkívül a probléma bizonyos operációs rendszerekkel is kapcsolatos lehet. A Windows nem különbözteti meg a kis- és nagybetűket, de más operációs rendszerek igen. Ezt meg kell vizsgálnunk, ha minden rendben működik, mondjuk a helyi Windows gépünkön, de nem egyszer telepítettük.

5.2. Beleértve a fájlkiterjesztést a vezérlőbe

Mivel a fájljaink általában kiterjesztéssel rendelkeznek, természetes lehet, hogy felvesszük őket, amikor visszaadjuk a sablon útvonalunkat a vezérlőbe. A Thymeleaf automatikusan hozzáfűzi az utótagot, ezért kerülnünk kell a megadást.

5.3. Nem használja az alapértelmezett helyet

Ezt a hibát akkor is látni fogjuk, ha sablonjainkat máshová helyeztük src / main / resources / templates. Ha másik helyet akarunk használni, akkor be kell állítanunk a tavasz.thymeleaf.prefix ingatlan vagy hozzon létre saját ClassLoaderTemplateResolver bab több helyszín kezelésére.

6. Következtetés

Ebben a gyors bemutatóban megismertük a Thymeleaf sablonok helyét. Először láttuk, hogyan lehet megváltoztatni az alapértelmezett helyet egy tulajdonság beállításával. Aztán arra építettünk, hogy létrehoztuk a sajátunkat ClassLoaderTemplateResolver hogy több helyet használjon.

Bemutattuk azt a hibát, amelyet látni fogunk, amikor a Thymeleaf nem találja a sablonjainkat, és hogyan lehet megoldani.

Mint mindig, a példakód megtalálható a GitHubon.