Introducere în inima problemei
În continuare, am pus în evidență pentru public o serie de utilități care ajută și simplifică dezvoltarea. Astăzi vă voi spune despre un instrument care este cu siguranță util tuturor celor care folosesc primăvara. Să presupunem că creați un controler, de exemplu, acest lucru:
După cum puteți vedea aici, declar că parametrul de intrare la controlerul va clasa „blz.model.dto.LoginDTO“. Pentru a verifica dacă câmpurile din formularul au fost introduse corect, fără erori, în validator de primăvară este folosit, de exemplu, este, blz.model.dto.validators.ValidateLoginDTO.
Codul unei clase a validatorului poate arăta aproximativ astfel:
Principalul obiectiv este să apelați metoda "ValidationUtils.rejectIfEmptyOrWhitespace". Aici verifică condiția din interiorul obiectului de comandă de intrare, astfel încât valoarea câmpului de e-mail și a parolei sunt pline. Dacă nu este cazul, obiectul de eroare "validation.failed.noemail.for.login" și "validation.failed.nopass.for.login" sunt plasate în obiectul Errors.
Aceste coduri nu vin de nicăieri: am avut de a crea un fișier de proprietăți, de exemplu, „/WEB-INF/localization/register_and_login.properties“ și a pus următorul text:
Aceasta nu este totul, acum ultimul pas este înregistrarea resurselor în contextul primăverii:
Trebuie să spun că un astfel de proces în mai multe etape mă face foarte enervant. contribuie la apariția erorilor cauzate în principal de inexactitate sau de grabă (bine, bine, cum ar putea fi altfel?). Cu toate acestea, schimbați pașii, eliminați, înlocuiți locurile, nu puteți. nimic mai bine nu este inventat și chiar dacă este gândit, este puțin probabil ca acest scooter să intre fără probleme în sistemul general al primăverii. Cu toate acestea, aceasta nu înseamnă că nu puteți simplifica singur procesul de verificare a prezenței în fișier a proprietăților codurilor de mesaje necesare pentru activitatea validatorilor. Pentru aceasta, am decis să adaug sprijin pentru o adnotare specială. Iată codul:
Acum mă întorc la fișierul validator și îl rescriu puțin:
După cum puteți vedea modificările ușor: la începutul fișierului, am realizat clasa validator de marcare ca codurile de raportare utilizate situate în interiorul ResourceBundle cu un nume de bază „/ WEB-INF / localizare / register_and_login“. Am pentru orice localizare pe care doriți să scanați, și a indicat codificarea resursei fișierului (faptul că ResourceBundle java nativ pentru a încărca datele din fișierele codate în iso8859-1, dar puteți specifica în mod explicit setul de caractere pentru primăvară, de exemplu, ferestre-1251 și este mult este mai convenabil decât să suferiți cu utilitarul native2ascii.exe).
Toate câmpurile conțin valoarea codului de mesaj pe care l-am marcat cu adnotarea "@ ValidationBundle.Marker".
Acum există două opțiuni pentru rularea testului contextului de primăvară și a claselor pentru corectitudine. În primul rând, și acesta este cel mai convenabil mod pentru mine de a crea un ant-script, parte din care este de a crea un raport despre erorile găsite. Pentru asta, am creat un script de furnici.
După rularea scriptului, voi primi acest raport html:
Trebuie să spun că apariția raportului poate fi setat flexibil: într-un fișier sursă al proiectului, veți găsi un șablon pentru raportul de viteză-ieșire (dacă nu știți ce viteza, atunci în curând voi publica o serie de articole dedicate lui).
Acum despre cel de-al doilea caz de utilizare. În acest caz, o nouă fasole este adăugată la contextul de primăvară, care este înregistrată la primirea evenimentului "Context updated", efectuarea scanării și generarea unui raport.
Când începe contextul, această fasole va fi apelată automat, ceea ce va genera un fișier html cu raportul.
Fiind singurul parametru al constructorului, trebuie să treci calea către fișierul unde va fi plasat raportul html generat despre erorile găsite. În cazul în care calea nu este absolută, dar relativă (nu începe cu fișierul :), trebuie să raportați cumva "baza" fișierului. Clasa Bean (AnnoBean) implementează interfața ServletContextAware. Aceasta înseamnă că, dacă totul a mers bine, atunci ei îl vor informa despre locația rădăcinii aplicației web, iar calea relativă va fi luată în calcul.
Deși codul utilitarului este ascuțit pentru lucrul cu validatorii, este destul de ușor să îl reconstrui și să te învețe să efectuezi verificări ale prezenței codurilor de mesaj pentru boabele arbitrare de primăvară.