JSF - Walidator na unikalność w bazie

0

Witam

W jaki sposob mozna napisac walidator JSFowy do sprawdzania unikalności w bazie?
Obecnie za pomoca InitialContext pobieram serwis i sprawdzam czy istnieje juz rekord w bazie z taka sama wartoscia jak pole ktore ma byc unikalne. Jednak to dziala tylko podczas tworzenia. Podczas edycji juz nie bo nie mam dostepu do calej encji a tylko do pola.

Moglbym zrobic tak, ze w jakims beanie albo samym walidatorze, bylaby trzymana referencja do encji na ktorej aktualnie pracuje i podczas walidacji pobierac ID tej encji i sprawdzac baze z wylaczeniem tego ID. Jednak czy jest do dobre rozwiazanie? Zna ktos moze jakies lepsze?:-)

Pozdrawiam

0

pomijając drobny fakt że validatory unikalności i tak nie są zawsze poprawne -> tzn od momentu wykonania validacji do faktycznego zapisu wartość zwrócona przez validotor może się zmienić - to wygodnie jest pisać validator na poziomie klasy i podawać listę atrybutów które sa unikalne bądź kolekcji zawierającej krotki które są wspólnie unikalne - w ramach jednej krotki stosujesz ANDA a pomiędzy krotkami ORA i sprawdzasz jednym zapytaniem czy "uniki" sa spełnione (jak oznaczysz na poziomie fielda to mając kilka Unique myusisz dla każdego fielda robić osobny select. Oczywiście mając całą encję pewnie jesteś w stanie określić czy encja jest nowa czy na tyle "stara" aby zrobić jej update.
Skoro validatory jsf korzystają z jsr'a to chyba można tam korzystać z validacj na poziomie klasy.

0

Niestety JSR 303 nie daje mozliwosci walidacji na unikalnosc encji.
Stosuje walidacje na encjach ale w tym przypadku zmuszony jestem do kombinowania.
Z tego co wyczytalem to seam udostepnia <s:formValidator/> dzieki ktoremu mozna walidowac kilka pol, wiec wystarczy ze sobie zrobie ukryte pole ktore bedzie trzymac id - ale to znowu troche kombinowane:/
Chcialbym znalezc rozwiazanie, ktore pozwoli mi napisac w miare uniwersalny validator na unikalnosc. Caly czas problem w tym, ze musze miec dostep do encji/id ktora jest aktualnie edytowana, zeby wykluczyc ja ze sprawdzanego zbioru.

UPDATE:
Zrobilem sobie swoj tag z walidatorem, gdzie przekazuje takie atrybuty jak id encji oraz serwis jako interfejs. Jest ok:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1