xesj.spring.validation
Tartalomjegyzék
alapok
-
A konverzió, validáció támogatását a xesj.spring.validation package-ben lévő osztályok végzik.
A két legfontosabb osztály:
- ValidationContext
- FormValidationContext
-
A példákban a validációs osztályok meghívása lambda kifejezéssel történik. Ennek oka, hogy a validációk csak akkor
fussanak le, amikor a validation context ennek értelmét látja. Ha a konverzió sikertelen volt, akkor nincs értelme
validációt végrehajtani. Ha egy mezőhöz maximum 2 hibaüzenet megengedett, és a 2 hibaüzenet már megvan, akkor
szintén nincs értelme a mezőn még több validációt végrehajtani.
-
enableAddMessage() metódus:
Ez a metódus jelen van a ValidationContext, és a FormValidationContext osztályban is.
Saját validáció meghívása előtt érdemes ezt a metódust meghívni, ugyanis ez figyelembe veszi, hogy a mezőhöz
hozzáadható-e új hibaüzenet, vagy sem. Ha volt konverziós hiba, akkor biztos nem adható hozzá új hibaüzenet,
és akkor sem ha a hibaüzenetek száma már elérte a megengedett maximumot.
FormValidationContext
-
A FormValidationContext osztályt akkor használjuk, ha html űrlap-pal dolgozunk.
Ennek adattartalmát a spring keretrendszer automatikusan konvertálja a form objektumba.
Tehát itt nem nekünk kell kezelni a konverziót, és a konverziós hibaüzeneteket sem mi állítjuk elő,
hanem a spring veszi ki őket a messages.properties fájlból. A validációt viszont nekünk kell elvégezni.
A hibaüzenetek automatikusan megjelennek az input mezők mellett, ha erre felkészítettük a view-t.
-
A példában egy html űrlapon az A, B, C mezőbe bekérjük egy háromszög oldalait, és ezt ellenőrizzük le.
Mindhárom mező kitöltése kötelező, a mezőknek egy lebegőpontos számot kell tartalmazni, a megadott minimum értékkel.
A háromszögnek megrajzolhatónak kell lennie, így vizsgálni kell az oldal méreteket.
ValidationContext
-
A ValidationContext osztályt akkor használjuk, ha az egész konverziós, validációs eljárást mi kezeljük,
például egy excel fájl tartalmát dolgozzuk fel.
A cellák tartalmát előszőr konvertálni kell a megfelelő adattípusra, majd ezen adattípuson kell végrehajtani
egy vagy több validációt. A konverzió, validáció során keletkezett hibaüzeneteket össze kell gyűjteni,
és megjeleníteni, vagy az adatküldő számára visszajuttatni.
-
A példában egy excel fájl 100 sorát kell ellenőrizni, ahol az 5. oszlopban irányítószámok vannak.
Az irányítószámot tartalmazó cellának kitöltöttnek kell lennie, 1000-9999 közé kell esnie,
és ha budapesti, akkor a kerületet is ellenőrizni kell.
Az utóbbira nincs validátor, így látható hogy lehet egy ellenőrző metódust beépíteni.
-
Marker
A ValidationContext objektumhoz a hibaüzeneteken kívül tetszőleges objektumot is hozzá lehet rendelni,
tehát olyan információt is tárolhatunk benne, mely nem tartozik szorosan a hibaüzenetekhez.
Például beállíthatjuk a kivánt response http státuszát, majd egy exception handler-ben ezt kiolvashatjuk: