A fehércímkés hibaoldalak tompának tűnnek, és negatívan befolyásolhatják a felhasználói élményt. Ismerje meg, hogyan hozhat létre egyéni hibaoldalakat a Thymeleaf használatával.
A szoftver hibákat tapasztal. Még a legjobb alkalmazások is hibákba ütköznek bizonyos esetekben. Ezért minden alkalmazásnak rendelkeznie kell valamilyen hibakezelési mechanizmussal.
A Spring Boot egy alapértelmezett Whitelabel hibaoldalt biztosít a hibakezeléshez szükséges automatikus konfiguráció összetevőjeként. Mindazonáltal az elvárás az, hogy a fejlesztők létrehozzanak egy egyéni hibaoldalt, amely felváltja a Whitelabel hibaoldalt. Ebből a cikkből megtudhatja, hogyan szabhatja testre a hibaoldalt a Spring Boot alkalmazásaihoz.
A Spring Boot Whitelabel hibaoldala
Amikor egy Spring Boot alkalmazás hibát észlel, kéri a /error URL. Ha ezen a helyen nincs nézet, megjelenik a Whitelabel hibaoldal:
A Whitelabel hibaoldal megadja a hiba dátumát és időpontját, valamint a megfelelő időzónát. Ezenkívül jelzi a hiba típusát és a hozzá tartozó kódot. A Whitelabel oldal ezt írja
ez 404-es hiba (az oldal nem található). Ennek az az oka, hogy a példaalkalmazásnak nincs hozzárendelése a „/products” URL-hez.A Whitelabel hibaoldalon megjelenő információk többsége meghatározott hibaattribútumokból származik. A Spring Boot hibanézete a következő hibaattribútumokhoz fér hozzá:
- hiba: a hiba oka.
- időbélyeg: a hiba előfordulásának dátuma és időpontja.
- állapot: a hibaállapot kódja.
- kivétel: a gyökér kivétel osztályneve (ha a hiba kivétel eredménye).
- üzenet: a kivétel üzenet (ha a hiba kivétel eredménye).
- hibákat: A BindingResult kivételből származó bármely eredmény (ha a hiba kivétel eredménye).
- nyom: a kivétel verem nyomkövetése (ha a hiba kivétel eredménye).
- pálya: Az URL elérési útja, ahol a hiba előfordul.
Hibaoldal létrehozása a Thymeleaf segítségével
A Spring Boot alkalmazásnak egyetlen hibaoldallal kell rendelkeznie egy „hiba” sablonon belül. Ennek a sablonnak a kiterjesztése az Ön által választott sablontechnológiától függően változik. Például, ha Java Server Pages (JSP) sablont választ, a fájlnévnek a következőnek kell lennie error.jsp.
Ez a minta Spring Boot alkalmazás azonban használja a Thymeleaf sablon motor. Tehát a sablon neve error.html. A hibasablont következetesen el kell helyeznie a sablon mappa alatt, a erőforrások könyvtárban az összes többi sablonfájllal.
Az error.html fájl
html>
<htmlxmlns: th="http://www.thymeleaf.org">
<head>
<title> Errortitle>
<linkrel="stylesheet"th: href="@{/css/style.css}"/>
head>
<bodyth: style="'background: url(/images/background1.jpg)
no-repeat center center fixed;'">
<divclass="container" >
<h1>An error has occurred...h1>
<imgth: src="@{/images/error-icon.png}"
width="100px" height="100px" />
<p>There seems to be a problem with the page you requested
(<spanth: text="${path}">span>).p>
<pth: text="${'The status code is ' + status
+ ', which means that the page was ' + error + '.'}">p>
<pth: text="${'Further details: ' + message + '.'}">p>
<aclass="btn"href="/home">Back to homea>
div>
body>
html>
A testreszabott hibaoldal számos fontos feladatot hajt végre. Kijelenti a hiba előfordulását. Ezt követően bemutatja a HTTP kérés ami kiváltotta a hibát. Továbbá ellátja a felhasználót a hibához tartozó állapotkóddal. De ha a felhasználó nem ismeri az állapotkódokat, az oldal a hibaattribútumon keresztül is elmagyarázza a kód jelentését.
A szöveg utolsó sora kivétel esetén üzenetet küld a felhasználónak. Ezután a végén található hivatkozás lehetővé teszi a felhasználó számára, hogy visszatérjen a kezdőlapra. A error.html fájl egy CSS-stíluslapot és két képet használ a következő nézet létrehozásához:
Tartsa felhasználóbarát hibaoldalát
A hibaoldal elsődleges célja, hogy tájékoztassa a felhasználót, hogy konkrét hiba történt. Ez a hibaoldal azonban továbbra is az alkalmazás része. Ezért kulcsfontosságú annak biztosítása, hogy a hibaoldal felhasználóbarát legyen.
Ez azt jelenti, hogy a hibát egyszerűbb módon kommunikáló hibaattribútumokat kell használni. Ezért választhatja a path attribútum használatát a nyomkövetési attribútum helyett, amely sokkal összetettebb, és olyan részleteket tartalmaz, amelyeket a felhasználónak nem kell tudnia.
Ezenkívül ne kívánjon egy véletlenszerű felhasználót túlzott információval ellátni az alkalmazás belső működéséről, mivel ez veszélyeztetheti az alkalmazás biztonságát.