Whitelabel-foutpagina's zien er bot uit en kunnen een negatieve invloed hebben op de gebruikerservaring. Leer hoe u aangepaste foutpagina's kunt maken met Thymeleaf.
Software ervaart fouten. Zelfs de beste applicaties zullen op een gegeven moment fouten tegenkomen. Daarom zou elke applicatie over een aantal foutafhandelingsmechanismen moeten beschikken.
Spring Boot biedt een standaard Whitelabel-foutpagina als onderdeel van de automatische configuratie voor foutafhandeling. Niettemin is de verwachting dat ontwikkelaars een aangepaste foutpagina zullen maken die de Whitelabel-foutpagina vervangt. In dit artikel leert u hoe u de foutpagina voor uw Spring Boot-toepassingen kunt aanpassen.
Spring Boot's Whitelabel-foutpagina
Wanneer een Spring Boot-toepassing een fout tegenkomt, vraagt deze om het /error URL. Als er op deze locatie geen weergave is, wordt de Whitelabel-foutpagina weergegeven:
Op de Whitelabel-foutpagina worden de datum en tijd van de fout vermeld, samen met de bijbehorende tijdzone. Bovendien geeft het het fouttype en de bijbehorende code aan. Op de Whitelabel-pagina staat dat
dit is een 404-fout (pagina niet gevonden). Dit komt omdat de voorbeeldtoepassing geen toewijzing heeft voor de URL '/products'.De meeste informatie op de Whitelabel-foutpagina is afkomstig van specifieke foutkenmerken. De foutweergave van Spring Boot heeft toegang tot de volgende foutkenmerken:
- fout: de reden voor de fout.
- tijdstempel: de datum en tijd waarop de fout optreedt.
- toestand: de foutstatuscode.
- uitzondering: de klassenaam van de rootuitzondering (als de fout het resultaat is van een uitzondering).
- bericht: het uitzonderingsbericht (als de fout het gevolg is van een uitzondering).
- fouten: Alle resultaten van een BindingResult-uitzondering (als de fout het gevolg is van een uitzondering).
- spoor: de uitzonderingsstapeltracering (als de fout het resultaat is van een uitzondering).
- pad: Het URL-pad waar de fout optreedt.
Een foutpagina maken met Thymeleaf
In uw Spring Boot-toepassing moet één enkele foutpagina zijn opgeslagen in een 'fout'-sjabloon. De uitbreiding van deze sjabloon is afhankelijk van de sjabloontechnologie die u besluit te gebruiken. Als u bijvoorbeeld kiest voor een Java Server Pages (JSP)-sjabloon, moet de bestandsnaam zijn fout.jsp.
In dit voorbeeld van de Spring Boot-toepassing wordt echter gebruik gemaakt van de Thymeleaf-sjabloonengine. De sjabloonnaam is dus fout.html. U moet uw foutsjabloon consequent in de sjabloon map, onder de bronnen map met al uw andere sjabloonbestanden.
Het error.html-bestand
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>
De aangepaste foutpagina voert verschillende belangrijke taken uit. Het meldt het optreden van een fout. Vervolgens wordt het tentoongesteld het HTTP-verzoek waardoor de fout werd veroorzaakt. Bovendien voorziet het de gebruiker van de statuscode die bij de fout hoort. Maar als de gebruiker niet bekend is met statuscodes, legt de pagina ook de betekenis van de code uit via het error-attribuut.
De laatste tekstregel presenteert de gebruiker een bericht in geval van een uitzondering. Vervolgens zorgt de link aan het einde ervoor dat de gebruiker terug kan navigeren naar de startpagina. De fout.html bestand gebruikt een CSS-stijlblad en twee afbeeldingen om de volgende weergave te creëren:
Houd uw foutpagina gebruiksvriendelijk
Het primaire doel van de foutpagina is om de gebruiker te informeren dat er een specifieke fout is opgetreden. Deze foutpagina is echter nog steeds een aspect van de applicatie. Daarom is het van cruciaal belang ervoor te zorgen dat de foutpagina ook gebruiksvriendelijk is.
Dit betekent dat u ervoor moet kiezen om de foutkenmerken te gebruiken die de fout op een meer ongecompliceerde manier communiceren. U kunt er dus voor kiezen om het path-attribuut te gebruiken in plaats van het trace-attribuut, dat veel complexer is en details bevat die de gebruiker niet hoeft te weten.
U wilt ook niet dat een willekeurige gebruiker overmatig wordt geïnformeerd over de interne werking van uw applicatie, omdat dit de beveiliging van de applicatie in gevaar kan brengen.