Jak vytvořit vlastní stránky Spring Boot Error s Thymeleafem

V softwaru dochází k chybám. I ty nejlepší aplikace narazí v určitém okamžiku na chyby. Každá aplikace by proto měla mít nějaké mechanismy pro řešení chyb.

Spring Boot poskytuje výchozí chybovou stránku Whitelabel jako součást své automatické konfigurace pro zpracování chyb. Očekává se však, že vývojáři vytvoří vlastní chybovou stránku, která nahradí chybovou stránku Whitelabel. V tomto článku se dozvíte, jak přizpůsobit chybovou stránku pro vaše aplikace Spring Boot.

Chybová stránka Whitelabel Spring Boot

Když aplikace Spring Boot narazí na chybu, vyžádá si adresu URL /error. Pokud na tomto místě není žádný pohled, zobrazí se chybová stránka Whitelabel:

Chybová stránka Whitelabel uvádí datum a čas chyby spolu s odpovídajícím časovým pásmem. Navíc označuje typ chyby a související kód. Stránka Whitelabel uvádí, že se jedná o chybu 404 (stránka nenalezena). Důvodem je, že ukázková aplikace nemá žádné mapování pro URL „/products“.

  Proč na desktopovém Linuxu stále záleží

Většina informací uvedených na chybové stránce Whitelabel je převzata ze specifických atributů chyb. Chybové zobrazení Spring Boot má přístup k následujícím atributům chyb:

  • chyba: důvod chyby.
  • časové razítko: datum a čas výskytu chyby.
  • status: stavový kód chyby.
  • výjimka: název třídy kořenové výjimky (pokud je chyba výsledkem výjimky).
  • zpráva: zpráva o výjimce (pokud je chyba výsledkem výjimky).
  • chyby: Jakékoli výsledky z výjimky BindingResult (pokud je chyba výsledkem výjimky).
  • trace: trasování zásobníku výjimek (pokud je chyba výsledkem výjimky).
  • cesta: Cesta URL, kde došlo k chybě.

Vytvoření chybové stránky pomocí Thymeleaf

Vaše aplikace Spring Boot by měla mít jednu chybovou stránku uloženou v „chybové“ šabloně. Rozšíření této šablony se bude lišit v závislosti na technologii šablony, kterou se rozhodnete použít. Pokud se například rozhodnete pro šablonu Java Server Pages (JSP), název souboru by měl být error.jsp.

  Získejte vlastní šablony, které se zobrazí na úvodní obrazovce v MS Office 2013

Tato ukázková aplikace Spring Boot však používá modul šablon Thymeleaf. Název šablony je tedy error.html. Šablonu chyb byste měli důsledně umístit do složky šablon, do adresáře zdrojů se všemi ostatními soubory šablon.

Soubor error.html

 <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
 <head>
     <title> Error</title>
     <link rel="stylesheet" th:href="https://wilku.top/how-to-create-custom-spring-boot-error-pages-with-thymeleaf/@{/css/style.css}"/>
 </head>
 <body th:style="'background: url(/images/background1.jpg)
 no-repeat center center fixed;'">
     <div class="container" >
       <h1>An error has occurred...</h1>
       <img th:src="https://wilku.top/how-to-create-custom-spring-boot-error-pages-with-thymeleaf/@{/images/error-icon.png}"
       width="100px" height="100px" />
       <p>There seems to be a problem with the page you requested
       (<span th:text="${path}"></span>).</p>
       <p th:text="${'The status code is ' + status
       + ', which means that the page was ' + error + '.'}"></p>
       <p th:text="${'Further details: ' + message + '.'}"></p>
       <a class="btn" href="https://wilku.top/home">Back to home</a>
     </div>
 </body>
</html>

Přizpůsobená chybová stránka plní několik důležitých úkolů. Hlásí výskyt chyby. Následně zobrazí požadavek HTTP, který spustil chybu. Kromě toho poskytuje uživateli stavový kód spojený s chybou. Pokud však uživatel nezná stavové kódy, stránka také vysvětluje význam kódu prostřednictvím atributu error.

  Jak rozdělit obrazovku na Chromebooku (5 metod)

Poslední řádek textu představuje uživateli zprávu v případě výjimky. Poté odkaz na konci umožňuje uživateli přejít zpět na domovskou stránku. Soubor error.html používá šablonu stylů CSS a dva obrázky k vytvoření následujícího zobrazení:

Udržujte svou chybovou stránku uživatelsky přívětivou

Primárním účelem chybové stránky je informovat uživatele, že došlo ke konkrétní chybě. Tato chybová stránka je však stále aspektem aplikace. Proto je zásadní zajistit, aby chybová stránka byla také uživatelsky přívětivá.

To bude znamenat zvolit použití atributů chyby, které chybu sdělují nekomplikovanějším způsobem. Můžete se tedy rozhodnout použít atribut path namísto atributu trace, který je mnohem složitější a obsahuje podrobnosti, které uživatel nepotřebuje znát.

Také nechcete náhodnému uživateli poskytovat nadměrné informace o vnitřním fungování vaší aplikace, protože by to mohlo ohrozit zabezpečení aplikace.