Whitelabel-fejlsider ser sløve ud og kan påvirke brugeroplevelsen negativt. Lær, hvordan du opretter brugerdefinerede fejlsider ved hjælp af Thymeleaf.

Software oplever fejl. Selv de bedste applikationer vil støde på fejl på et tidspunkt. Derfor bør enhver applikation have nogle fejlhåndteringsmekanismer på plads.

Spring Boot giver en standard Whitelabel-fejlside som en komponent i dens automatiske konfiguration til fejlhåndtering. Ikke desto mindre er forventningen, at udviklere vil oprette en brugerdefineret fejlside, der erstatter Whitelabel-fejlsiden. I denne artikel lærer du, hvordan du tilpasser fejlsiden til dine Spring Boot-applikationer.

Spring Boots Whitelabel-fejlside

Når en Spring Boot-applikation støder på en fejl, anmoder den om /error URL. Hvis der ikke er nogen visning på denne placering, viser den Whitelabel-fejlsiden:

Whitelabel-fejlsiden angiver datoen og klokkeslættet for fejlen sammen med dens tilsvarende tidszone. Derudover angiver den fejltypen og dens tilhørende kode. Whitelabel-siden siger det

instagram viewer
dette er en 404 fejl (siden blev ikke fundet). Dette skyldes, at eksempelapplikationen ikke har nogen tilknytning til "/produkter"-URL'en.

De fleste af de oplysninger, der præsenteres på Whitelabel-fejlsiden, er taget fra specifikke fejlattributter. Spring Boots fejlvisning har adgang til følgende fejlattributter:

  • fejl: årsagen til fejlen.
  • tidsstempel: dato og klokkeslæt, hvor fejlen opstår.
  • status: fejlstatuskoden.
  • undtagelse: klassenavnet på root-undtagelsen (hvis fejlen er et resultat af en undtagelse).
  • besked: undtagelsesmeddelelsen (hvis fejlen er et resultat af en undtagelse).
  • fejl: Alle resultater fra en BindingResult-undtagelse (hvis fejlen er et resultat af en undtagelse).
  • spore: undtagelsesstacksporingen (hvis fejlen er et resultat af en undtagelse).
  • sti: URL-stien, hvor fejlen opstår.

Oprettelse af en fejlside med Thymeleaf

Din Spring Boot-applikation skal have en enkelt fejlside gemt i en "fejl"-skabelon. Udvidelsen af ​​denne skabelon vil variere afhængigt af den skabelonteknologi, du beslutter dig for at bruge. For eksempel, hvis du vælger en Java Server Pages (JSP) skabelon, skal filnavnet være fejl.jsp.

Dette eksempel på Spring Boot-applikationen bruger dog Thymeleaf-skabelonmotoren. Så skabelonnavnet er fejl.html. Du bør konsekvent placere din fejlskabelon i skabelon mappe, under ressourcer mappe med alle dine andre skabelonfiler.

Filen error.html

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>

Den tilpassede fejlside udfører flere vigtige opgaver. Den erklærer forekomsten af ​​en fejl. Efterfølgende fremviser det HTTP-anmodningen der udløste fejlen. Desuden forsyner den brugeren med den statuskode, der er knyttet til fejlen. Men hvis brugeren ikke er bekendt med statuskoder, forklarer siden også betydningen af ​​koden gennem fejlattributten.

Den sidste tekstlinje præsenterer brugeren for en besked i tilfælde af en undtagelse. Derefter tillader linket i slutningen brugeren at navigere tilbage til startsiden. Det fejl.html fil bruger et CSS-typografiark og to billeder til at oprette følgende visning:

Hold din fejlside brugervenlig

Det primære formål med fejlsiden er at informere brugeren om, at der er opstået en specifik fejl. Denne fejlside er dog stadig et aspekt af applikationen. Derfor er det afgørende at sikre, at fejlsiden også er brugervenlig.

Dette vil betyde, at du vælger at bruge de fejlattributter, der kommunikerer fejlen på en mere ukompliceret måde. Så du kan vælge at bruge path-attributten i stedet for trace-attributten, som er meget mere kompleks og indeholder detaljer, som brugeren ikke behøver at kende.

Du ønsker heller ikke at give en tilfældig bruger overdreven information om din applikations indre funktion, da dette kan kompromittere applikationens sikkerhed.