Spring MVC: Validator Best Practises

pizza1234

Erfahrenes Mitglied
Hallo,

ich habe mir jetzt schon zig Beispiele mit den Validator in spring mvc angeschaut, aber so ganz komm ich noch nicht dahinter, wo Validierungen stattfinden, die ein bisschen mehr erforden als nur ein "rejectIfEmpty" u.ä.!
Als Beispiel: Ich muss überprüfen, ob es den Benutzernamen des neu anzulegenden Benutzers schon gibt. Dazu brauche ich auf jeden Fall ein DAO. Verdrahte ich den nun mit meinen Validator oder mache ich das im (SimpleForm)Controller, wo ich wahrscheinlich das betreffende DAO sowieso schon habe? Und wenn ja, wo genau?
Ansonsten weiß ich nicht, welchen wirklichen Sinn der Validator macht?Nur um zu Überprüfen, ob Felder ausgefüllt sind, extra für jeden Controller einen Validator anzulegen, finde ich ein bisschen dicke.Zumal das mit Javascript deutlich eleganter geht.
Vielleicht habt ihr ja mal ein Beispiel, in dem ein bisschen mehr als einfache "reject"-Methoden enthalten sind.

Grüße,
Peter
 
Ein Validator ist eine Springbean. Was hindert dich also daran, dir einfach die benötigten Referenzen injecten zu lassen? IMHO ist es sinnvoller sich einen Service injecten zu lassen, weil dort meist die Transaktionsgrenzen gesetzt werden. Ein direkter Call an ein DAO läuft (je nachdem wie deine App konfiguriert ist) meistens ohne Transaktion. Damit verlierst du dann Optimierungsmöglichkeiten, so wie das readOnly Flag.

Validatoren solltest du auf dein Domänenobjekt bzw. DTO zuschneiden. Desweiteren gelten für Validatoren die gleichen OO Designprinzipien wie für alle anderen Klassen :). D.h. Komposition (ein EmailValidator in einem UserValidator) ist durchaus möglich und sinnvoll.

Gruß
Ollie
 
Hi Ollie,
genau das wollte ich wissen, bzw. an die Möglichkeit, einen Validator in den Anderen zu injecten, hab ich noch garnicht gedacht!

Danke & Grüße
Peter
 

Neue Beiträge

Zurück