Hvordan lage tilpassede Spring Boot-feilsider med Thymeleaf

Programvare opplever feil. Selv de beste applikasjonene vil støte på feil på et tidspunkt. Derfor bør hver applikasjon ha noen feilhåndteringsmekanismer på plass.

Spring Boot gir en standard Whitelabel-feilside som en komponent i den automatiske konfigurasjonen for feilhåndtering. Ikke desto mindre er forventningen at utviklere vil lage en egendefinert feilside som erstatter Whitelabel-feilsiden. I denne artikkelen lærer du hvordan du tilpasser feilsiden for Spring Boot-applikasjonene dine.

Spring Boots Whitelabel-feilside

Når en Spring Boot-applikasjon støter på en feil, ber den om /error URL. Hvis det ikke er noen visning på dette stedet, viser den Whitelabel-feilsiden:

Whitelabel-feilsiden angir dato og klokkeslett for feilen, sammen med dens tilsvarende tidssone. I tillegg indikerer den feiltypen og den tilhørende koden. Whitelabel-siden oppgir at dette er en 404-feil (siden ble ikke funnet). Dette er fordi eksempelapplikasjonen ikke har noen tilordning for «/produkter»-URLen.

  12 apper som alle hundeforeldre må laste ned

Mesteparten av informasjonen som presenteres på Whitelabel-feilsiden er hentet fra spesifikke feilattributter. Spring Boots feilvisning har tilgang til følgende feilattributter:

  • feil: årsaken til feilen.
  • tidsstempel: datoen og klokkeslettet da feilen oppstår.
  • status: feilstatuskoden.
  • unntak: klassenavnet til rotunntaket (hvis feilen er et resultat av et unntak).
  • melding: unntaksmeldingen (hvis feilen er et resultat av et unntak).
  • feil: Eventuelle resultater fra et BindingResult-unntak (hvis feilen er et resultat av et unntak).
  • trace: unntaksstabelsporingen (hvis feilen er et resultat av et unntak).
  • bane: URL-banen der feilen oppstår.

Opprette en feilside med Thymeleaf

Spring Boot-applikasjonen din skal ha en enkelt feilside lagret i en «feil»-mal. Utvidelsen av denne malen vil variere avhengig av malteknologien du velger å bruke. Hvis du for eksempel velger en Java Server Pages (JSP)-mal, skal filnavnet være error.jsp.

  Hva du ikke visste om ISDN

Dette eksempelet Spring Boot-applikasjonen bruker imidlertid Thymeleaf-malmotoren. Så malnavnet er error.html. Du bør konsekvent plassere feilmalen i malmappen, under ressurskatalogen med alle de andre malfilene.

error.html-filen

 <!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 tilpassede feilsiden utfører flere viktige oppgaver. Den erklærer forekomsten av en feil. Deretter viser den frem HTTP-forespørselen som utløste feilen. Videre gir den brukeren statuskoden knyttet til feilen. Men hvis brukeren ikke er kjent med statuskoder, forklarer siden også betydningen av koden gjennom feilattributtet.

  10 beste nettsteder for å lære nye språk

Den siste tekstlinjen presenterer brukeren med en melding i tilfelle unntak. Deretter tillater lenken på slutten brukeren å navigere tilbake til hjemmesiden. error.html-filen bruker et CSS-stilark og to bilder for å lage følgende visning:

Hold feilsiden din brukervennlig

Det primære formålet med feilsiden er å informere brukeren om at en spesifikk feil har oppstått. Denne feilsiden er imidlertid fortsatt et aspekt av applikasjonen. Derfor er det avgjørende å sikre at feilsiden også er brukervennlig.

Dette vil bety å velge å bruke feilattributtene som kommuniserer feilen på en mer ukomplisert måte. Så du kan velge å bruke path-attributtet i stedet for trace-attributtet, som er mye mer komplekst og inneholder detaljer som brukeren ikke trenger å vite.

Du vil heller ikke gi en tilfeldig bruker overdreven informasjon om den indre funksjonen til applikasjonen din, da dette kan kompromittere applikasjonens sikkerhet.