Hur man skapar anpassade Spring Boot-felsidor med Thymeleaf

Programvaran upplever fel. Även de bästa applikationerna kommer att stöta på fel vid något tillfälle. Därför bör varje applikation ha vissa felhanteringsmekanismer på plats.

Spring Boot tillhandahåller en standard Whitelabel-felsida som en komponent i dess automatiska konfiguration för felhantering. Icke desto mindre är förväntningarna att utvecklare kommer att skapa en anpassad felsida som ersätter Whitelabel-felsidan. I den här artikeln får du lära dig hur du anpassar felsidan för dina Spring Boot-applikationer.

Spring Boots Whitelabel-felsida

När en Spring Boot-applikation stöter på ett fel, begär den /error-URL. Om det inte finns någon vy på den här platsen visar den Whitelabel-felsidan:

Whitelabel-felsidan anger datum och tid för felet, tillsammans med dess motsvarande tidszon. Dessutom indikerar den feltypen och dess tillhörande kod. Whitelabel-sidan anger att detta är ett 404-fel (sidan hittades inte). Detta beror på att exempelapplikationen inte har någon mappning för URL:en ”/produkter”.

Det mesta av informationen som presenteras på Whitelabel-felsidan är hämtad från specifika felattribut. Spring Boots felvy har tillgång till följande felattribut:

  • fel: orsaken till felet.
  • tidsstämpel: datum och tid då felet inträffade.
  • status: felstatuskoden.
  • undantag: klassnamnet på rotundantaget (om felet är ett resultat av ett undantag).
  • meddelande: undantagsmeddelandet (om felet är ett resultat av ett undantag).
  • errors: Alla resultat från ett BindingResult-undantag (om felet är ett resultat av ett undantag).
  • trace: undantagsstackspårningen (om felet är ett resultat av ett undantag).
  • sökväg: URL-sökvägen där felet uppstår.

Skapa en felsida med Thymeleaf

Din Spring Boot-applikation bör ha en enda felsida lagrad i en ”fel”-mall. Förlängningen av denna mall kommer att variera beroende på vilken mallteknik du väljer att använda. Om du till exempel väljer en Java Server Pages-mall (JSP) ska filnamnet vara error.jsp.

Men detta exempel på Spring Boot-applikationen använder Thymeleaf-mallmotorn. Så mallens namn är error.html. Du bör konsekvent placera din felmall i mallmappen, under resurskatalogen med alla dina andra mallfiler.

Filen 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>

Den anpassade felsidan utför flera viktiga uppgifter. Den förklarar förekomsten av ett fel. Därefter visar den HTTP-begäran som utlöste felet. Dessutom förser den användaren med statuskoden som är associerad med felet. Men om användaren inte är bekant med statuskoder, förklarar sidan också innebörden av koden genom felattributet.

Den sista textraden ger användaren ett meddelande i händelse av ett undantag. Sedan tillåter länken i slutet 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:

Håll din felsida användarvänlig

Det primära syftet med felsidan är att informera användaren om att ett specifikt fel har inträffat. Den här felsidan är dock fortfarande en aspekt av applikationen. Därför är det avgörande att se till att felsidan också är användarvänlig.

Detta innebär att du väljer att använda felattributen som kommunicerar felet på ett mer okomplicerat sätt. Så du kan välja att använda sökvägsattributet istället för spårningsattributet, som är mycket mer komplext och innehåller detaljer som användaren inte behöver känna till.

Du vill inte heller ge en slumpmässig användare överdriven information om hur din applikation fungerar, eftersom detta kan äventyra applikationens säkerhet.