Strani z napakami Whitelabel so videti odkrite in lahko negativno vplivajo na uporabniško izkušnjo. Naučite se ustvariti strani z napakami po meri z uporabo Thymeleaf.
Programska oprema ima napake. Tudi najboljše aplikacije bodo v določenem trenutku naletele na napake. Zato bi morala imeti vsaka aplikacija določene mehanizme za odpravo napak.
Spring Boot ponuja privzeto stran z napako Whitelabel kot komponento svoje samodejne konfiguracije za obravnavanje napak. Kljub temu se pričakuje, da bodo razvijalci ustvarili stran z napako po meri, ki bo nadomestila stran z napako Whitelabel. V tem članku se boste naučili, kako prilagoditi stran z napakami za vaše aplikacije Spring Boot.
Stran z napako Whitelabel programa Spring Boot
Ko aplikacija Spring Boot naleti na napako, zahteva /error URL. Če na tej lokaciji ni pogleda, se prikaže stran z napako Whitelabel:
Stran z napako Whitelabel navaja datum in čas napake, skupaj z ustreznim časovnim pasom. Poleg tega označuje vrsto napake in z njo povezano kodo. Stran Whitelabel to navaja
to je napaka 404 (Stran ni najdena). To je zato, ker vzorčna aplikacija nima preslikave za URL »/products«.Večina informacij, predstavljenih na strani z napakami Whitelabel, je vzetih iz posebnih atributov napak. Pogled napak Spring Boot ima dostop do naslednjih atributov napak:
- napaka: razlog za napako.
- časovni žig: datum in čas, ko se pojavi napaka.
- stanje: koda stanja napake.
- izjema: ime razreda korenske izjeme (če je napaka posledica izjeme).
- sporočilo: sporočilo o izjemi (če je napaka posledica izjeme).
- napake: Vsi rezultati izjeme BindingResult (če je napaka posledica izjeme).
- sled: sled sklada izjem (če je napaka posledica izjeme).
- pot: pot URL, kjer se pojavi napaka.
Ustvarjanje strani z napakami s timelijem
Vaša aplikacija Spring Boot mora imeti eno stran z napako, shranjeno v predlogi »napaka«. Razširitev te predloge se bo razlikovala glede na tehnologijo predloge, ki jo boste uporabili. Na primer, če se odločite za predlogo Java Server Pages (JSP), mora biti ime datoteke napaka.jsp.
Vendar ta vzorčna aplikacija Spring Boot uporablja mehanizem predloge Thymeleaf. Torej, ime predloge je error.html. Svojo predlogo napake dosledno umeščajte v predlogo mapo, pod virov imenik z vsemi drugimi datotekami predloge.
Datoteka 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>
Prilagojena stran z napakami opravlja več pomembnih nalog. Izjavlja pojav napake. Kasneje se pokaže zahtevo HTTP ki je sprožilo napako. Poleg tega uporabniku posreduje statusno kodo, povezano z napako. Če pa uporabnik ne pozna statusnih kod, stran razloži tudi pomen kode prek atributa napake.
Zadnja vrstica besedila predstavlja uporabniku sporočilo v primeru izjeme. Nato povezava na koncu uporabniku omogoči navigacijo nazaj na domačo stran. The error.html datoteka uporablja slogovno datoteko CSS in dve sliki za ustvarjanje naslednjega pogleda:
Naj bo vaša stran z napakami uporabniku prijazna
Glavni namen strani z napako je obvestiti uporabnika, da je prišlo do določene napake. Vendar je ta stran z napako še vedno del aplikacije. Zato je ključnega pomena zagotoviti, da je stran z napako tudi uporabniku prijazna.
To bo pomenilo, da se boste odločili za uporabo atributov napake, ki sporočajo napako na bolj nezapleten način. Tako se lahko odločite za uporabo atributa poti namesto atributa sledi, ki je veliko bolj zapleten in vsebuje podrobnosti, ki jih uporabniku ni treba poznati.
Prav tako ne želite naključnemu uporabniku posredovati pretiranih informacij o notranjem delovanju vaše aplikacije, saj bi to lahko ogrozilo varnost aplikacije.