Zmena adresára šablón Thymeleaf v Spring Boot

1. Úvod

Thymeleaf je šablónový nástroj, ktorý môžeme použiť pre naše aplikácie Spring Boot. Rovnako ako pri mnohých veciach, Spring Boot poskytuje predvolené umiestnenie, kde očakáva, že nájde naše šablóny.

V tomto krátkom návode sa pozrieme na to, ako môžeme zmeniť umiestnenie šablóny. Potom sa naučíme, ako mať viac umiestnení.

2. Inštalácia

Ak chcete použiť Thymeleaf, musíme do nášho pridať vhodný štartér Spring Boot pom.xml:

 org.springframework.boot spring-boot-starter-thymeleaf 2.2.2.RELEASE 

3. Zmena predvoleného umiestnenia

V predvolenom nastavení vyhľadáva Spring Boot naše šablóny v src / main / resources / templates. Môžeme tam umiestniť naše šablóny, usporiadať ich do podadresárov a bez problémov.

Teraz si predstavme, že máme požiadavku, aby sa všetky naše šablóny nachádzali v adresári s názvom šablóny-2.

Vytvorme šablónu na pozdrav a vložíme ju do src / main / resources / templates-2:

    Enums in Thymeleaf 

Dobrý deň od „templates / templates-2“

Budeme tiež potrebovať ovládač:

@GetMapping ("/ ahoj") public String sayHello () {návrat "ahoj"; }

Keďže toto základné nastavenie nie je v ceste, nakonfigurujme Spring Boot tak, aby používalo naše šablóny-2 adresár prepísaním vlastnosti v priečinku application.properties:

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

Teraz, keď voláme naše HelloController, uvidíme náš pozdrav od ahoj.html.

4. Používanie viacerých umiestnení

Teraz, keď sme sa naučili, ako zmeniť predvolené umiestnenie, pozrime sa, ako môžeme použiť viac umiestnení šablón.

Aby sme to dosiahli, vytvorme a ClassLoaderTemplateResolver fazuľa:

@Bean public ClassLoaderTemplateResolver secondaryTemplateResolver () {ClassLoaderTemplateResolver secondaryTemplateResolver = nový ClassLoaderTemplateResolver (); secondaryTemplateResolver.setPrefix ("templates-2 /"); secondaryTemplateResolver.setSuffix (". html"); secondaryTemplateResolver.setTemplateMode (TemplateMode.HTML); secondaryTemplateResolver.setCharacterEncoding ("UTF-8"); secondaryTemplateResolver.setOrder (1); secondaryTemplateResolver.setCheckExistence (true); návrat sekundárnyTemplateResolver; }

V našom vlastnom fazule sme nastavili svoju predponu na sekundárny adresár šablón, ktorý používame: šablóny-2. Nastavili sme tiež CheckExistance označiť pravda. Toto je kľúč, ktorý umožní, aby rezolútory fungovali v reťazci.

Vďaka tejto konfigurácii môže naša aplikácia predvolene používať šablóny hlavné / zdroje / šablóny adresár a main / resources / templates-2.

5. Chyby

Keď pracujeme s Thymeleaf, môže sa nám zobraziť táto chyba:

Chyba pri riešení šablóny [ahoj], šablóna nemusí existovať alebo nemusí byť dostupná žiadnemu z nakonfigurovaných prekladačov šablón

Túto správu vidíme, keď Thymeleaf z nejakého dôvodu nemôže nájsť šablónu. Pozrime sa na niektoré z možných dôvodov a ako ich opraviť.

5.1. Preklep v ovládači

Túto chybu môžeme často vidieť kvôli jednoduchému preklepu. Prvá vec, ktorú treba skontrolovať, je, že názov nášho súboru mínus prípona a šablóna, ktorú požadujeme v našom ovládači, sa presne zhodujú. Ak používame podadresáre, musíme sa tiež ubezpečiť, že sú správne.

Okrem toho môže ísť o problém s určitými operačnými systémami. Windows nerozlišujú veľké a malé písmená, ale iné operačné systémy áno. Mali by sme sa na to pozrieť, ak všetko funguje, povedzme, na našom lokálnom počítači so systémom Windows, ale až potom, čo sme ho nasadili.

5.2. Vrátane prípony súboru v radiči

Pretože naše súbory majú zvyčajne príponu, môže byť prirodzené ich zahrnúť, keď vrátime našu cestu šablóny do radiča. Thymeleaf automaticky pripojí príponu, takže by sme sa mali vyhnúť ich zadávaniu.

5.3. Nepoužíva sa predvolené umiestnenie

Túto chybu uvidíme, aj keď sme svoje šablóny umiestnili niekde inde ako src / main / resources / templates. Ak chceme použiť iné umiestnenie, musíme buď nastaviť pružina.tymeleaf.predpona vlastníctvo alebo si vytvoriť vlastný ClassLoaderTemplateResolver fazuľa na zvládnutie viacerých miest.

6. Záver

V tomto rýchlom výučbe sme sa dozvedeli o umiestneniach šablón Thymeleaf. Najprv sme videli, ako zmeniť predvolené umiestnenie nastavením vlastnosti. Potom sme na tom stavali tým, že sme si vytvorili svoj vlastný ClassLoaderTemplateResolver používať viac miest.

Končili sme diskusiou o chybe, ktorú uvidíme, keď Thymeleaf nemôže nájsť naše šablóny a ako ich vyriešiť.

Ako vždy, ukážkový kód nájdete na GitHub.


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