Hur man skapar anpassade Spring Boot-felsidor med Thymeleaf

By rik

Mjukvarufel är en realitet. Även de mest välkonstruerade applikationerna kan råka ut för problem. Därför är det viktigt att varje applikation har robusta mekanismer för felhantering.

Spring Boot erbjuder en standardiserad, så kallad ”Whitelabel”-felsida som en del av sin automatiska felhantering. Trots detta är det förväntat att utvecklare skapar anpassade felsidor för att ersätta denna standard. I den här artikeln kommer vi att utforska hur du kan skräddarsy felsidorna i dina Spring Boot-applikationer.

Spring Boots standardfelsida (Whitelabel)

När en Spring Boot-applikation stöter på ett fel, gör den en begäran till URL:en ”/error”. Om ingen specifik vy är kopplad till denna URL, presenteras standard-felsidan, Whitelabel:

 

Denna Whitelabel-felsida ger information om tidpunkten då felet uppstod, inklusive tidszon. Den visar också vilken typ av fel det rör sig om och dess associerade kod. I exemplet visas ett 404-fel (sidan hittas inte). Detta beror på att exempelapplikationen saknar en mappning för URL:en ”/produkter”.

Informationen på Whitelabel-felsidan hämtas från olika felattribut. Spring Boots felvy kan använda följande attribut:

  • fel: Beskriver orsaken till felet.
  • tidsstämpel: Anger datum och tid när felet inträffade.
  • status: Felstatuskoden.
  • undantag: Namnet på den undantagsklass som utlöste felet (om tillämpligt).
  • meddelande: Det meddelande som är kopplat till undantaget (om tillämpligt).
  • errors: Resultat från ett eventuellt BindingResult-undantag.
  • trace: Fullständig stackspårning för undantaget.
  • sökväg: Den URL-sökväg där felet inträffade.

Skapa en anpassad felsida med Thymeleaf

I en Spring Boot-applikation bör en anpassad felsida finnas i en mall med namnet ”error”. Filändelsen på mallen beror på vilken mallteknik du använder. Om du använder Java Server Pages (JSP) bör filnamnet vara error.jsp.

I detta exempel används dock Thymeleaf som mallmotor, vilket innebär att mallens namn är error.html. Det är konvention att placera felmallen i mallmappen, under resurskatalogen tillsammans med andra mallfiler.

Filen error.html

 <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
 <head>
     <title>Fel</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="'bakgrund: url(/images/background1.jpg)
 no-repeat center center fixed;'">
     <div class="container" >
       <h1>Ett fel har inträffat...</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>Det verkar vara ett problem med sidan du begärde
       (<span th:text="${path}"></span>).</p>
       <p th:text="${'Statuskoden är ' + status
       + ', vilket innebär att sidan var ' + error + '.'}"></p>
       <p th:text="${'Ytterligare information: ' + message + '.'}"></p>
       <a class="btn" href="https://wilku.top/home">Tillbaka till startsidan</a>
     </div>
 </body>
</html>

Denna anpassade felsida har flera viktiga funktioner. Den informerar om att ett fel har inträffat. Den visar den HTTP-begäran som utlöste felet och ger användaren statuskoden som är kopplad till felet. Om användaren inte är bekant med statuskoder, förklarar sidan också innebörden av koden med hjälp av felattributet.

Den sista textraden ger användaren ett meddelande i händelse av ett undantag. Länken längst ner gör det möjligt för användaren att navigera tillbaka till startsidan. Filen error.html använder en CSS-stilmall och två bilder för att skapa följande vy:

Se till att felsidan är användarvänlig

Huvudsyftet med en felsida är att informera användaren om att ett fel har inträffat. Samtidigt är felsidan en del av applikationens användargränssnitt, och det är viktigt att den är användarvänlig.

Det innebär att välja att presentera felattributen på ett sätt som är lätt att förstå. Till exempel kan det vara lämpligare att använda sökvägsattributet istället för spårningsattributet, som ofta är mycket komplext och innehåller detaljer som användaren inte behöver se.

Det är också viktigt att inte lämna ut för mycket information om hur applikationen fungerar, eftersom det kan utgöra en säkerhetsrisk.