Baltosios etiketės klaidų puslapiai atrodo neryškūs ir gali neigiamai paveikti naudotojo patirtį. Sužinokite, kaip sukurti pasirinktinius klaidų puslapius naudojant Thymeleaf.
Programinėje įrangoje atsiranda klaidų. Net geriausios programos tam tikru momentu susidurs su klaidomis. Todėl kiekviena programa turėtų turėti tam tikrus klaidų valdymo mechanizmus.
„Spring Boot“ pateikia numatytąjį „Whitelabel“ klaidos puslapį kaip automatinės konfigūracijos, skirtos klaidų apdorojimui, komponentą. Nepaisant to, tikimasi, kad kūrėjai sukurs pasirinktinį klaidos puslapį, kuris pakeis Whitelabel klaidos puslapį. Šiame straipsnyje sužinosite, kaip tinkinti „Spring Boot“ programų klaidos puslapį.
„Spring Boot“ baltosios etiketės klaidos puslapis
Kai „Spring Boot“ programa susiduria su klaida, ji prašo /error URL. Jei šioje vietoje rodinio nėra, rodomas baltos etiketės klaidos puslapis:
„Whitelabel“ klaidos puslapyje nurodoma klaidos data ir laikas bei atitinkama laiko juosta. Be to, jis nurodo klaidos tipą ir su juo susijusį kodą. „Whitelabel“ puslapyje tai teigiama
tai 404 klaida (puslapis nerastas). Taip yra todėl, kad pavyzdinėje programoje nėra „/products“ URL susiejimo.Dauguma „Whitelabel“ klaidos puslapyje pateiktos informacijos yra paimta iš konkrečių klaidų atributų. „Spring Boot“ klaidų rodinys turi prieigą prie šių klaidų atributų:
- klaida: klaidos priežastis.
- laiko žyma: data ir laikas, kada įvyko klaida.
- statusą: klaidos būsenos kodas.
- išimtis: šakninės išimties klasės pavadinimas (jei klaida atsirado dėl išimties).
- žinutę: išimties pranešimas (jei klaida atsirado dėl išimties).
- klaidų: bet kokie BindingResult išimties rezultatai (jei klaida atsirado dėl išimties).
- pėdsaką: išimties dėklo pėdsakas (jei klaida atsirado dėl išimties).
- kelias: URL kelias, kuriame įvyksta klaida.
Klaidos puslapio kūrimas naudojant Thymeleaf
„Spring Boot“ programoje turėtų būti vienas klaidos puslapis, saugomas „klaidos“ šablone. Šio šablono plėtinys skirsis priklausomai nuo šablono technologijos, kurią nuspręsite naudoti. Pavyzdžiui, jei pasirenkate „Java Server Pages“ (JSP) šabloną, failo pavadinimas turėtų būti toks error.jsp.
Tačiau šią „Spring Boot“ programos pavyzdį naudoja Thymeleaf šablono variklis. Taigi, šablono pavadinimas yra error.html. Turėtumėte nuosekliai įdėti savo klaidos šabloną į šabloną aplanką, po išteklių katalogą su visais kitais šablono failais.
Failas 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>
Tinkintas klaidų puslapis atlieka keletą svarbių užduočių. Jis deklaruoja klaidos atsiradimą. Vėliau jis demonstruojamas HTTP užklausą kuris sukėlė klaidą. Be to, jis pateikia vartotojui būsenos kodą, susietą su klaida. Tačiau jei vartotojas nėra susipažinęs su būsenos kodais, puslapyje taip pat paaiškinama kodo reikšmė naudojant klaidos atributą.
Paskutinė teksto eilutė vartotojui pateikia pranešimą išimties atveju. Tada pabaigoje esanti nuoroda leidžia vartotojui grįžti į pagrindinį puslapį. The error.html failas naudoja CSS stiliaus lapą ir du vaizdus, kad sukurtų šį rodinį:
Kad klaidų puslapis būtų patogus naudoti
Pagrindinis klaidų puslapio tikslas yra informuoti vartotoją, kad įvyko konkreti klaida. Tačiau šis klaidos puslapis vis dar yra programos aspektas. Todėl labai svarbu užtikrinti, kad klaidų puslapis būtų patogus naudoti.
Tai reikš, kad pasirinksite naudoti klaidos atributus, kurie nesudėtingesniu būdu perduoda klaidą. Taigi galite pasirinkti naudoti kelio atributą, o ne pėdsaką, kuris yra daug sudėtingesnis ir kuriame yra informacijos, kurios vartotojui nereikia žinoti.
Taip pat nenorite atsitiktiniam vartotojui pateikti per daug informacijos apie vidinį programos veikimą, nes tai gali pakenkti programos saugumui.