2012-03-24 5 views
2

Ich erstelle eine Java-Desktop-Anwendung und fragte mich, wie ich mit der Validierung umgehen sollte.MVC Projektstruktur Validierungsklassen (Java)

Ich erhalte eine Karte mit Registrierungsinformationen (Benutzername, Passwort, ...) in meinem Controller. Jetzt möchte ich die Informationen aus der Karte validieren und alle Fehler anzeigen, die bei der Validierung auftreten. Daher habe ich darüber nachgedacht, eine benutzerdefinierte RegistrierungsValidation in einem neuen Paket namens Validierung zu erstellen. Dann sollte diese Klasse eine Liste mit Fehlern zurückgeben. Aber ich frage mich ...

Ich habe immer gelernt, dass die Validierung in der richtigen Modellklasse durchgeführt werden sollte, macht eine Validierungsklasse gegen das MVC-Prinzip?

Wo soll ich diese Validierungsklasse nennen, von meinem Controller oder von meinem Modell?

Wie soll ich die Validierungsklasse aufrufen? (Machen Sie die Methoden statisch, machen Sie es zu einem Singleton, machen Sie einfach eine Instanz davon im Controller/Modell oder anderen?)

Gibt es bessere Lösungen, um die Validierung zu extrahieren?

Antwort

0

Gute Frage. Wenn Sie eine Karte haben, können Sie einfach create java bean from it. Diese Java-Bean wird Ihr Modell und es wird eine Art von öffentlichen validate-Methode haben, die Liste der Fehler zurückgibt (Karte der Fehler mit Schlüssel als Name der Eigenschaft und Fehlermeldung könnte auch funktionieren).

Sicherstellen, dass einige Aspekte der Validierung nicht nur mit Bean-Daten überprüft werden können (z. B. müssen Sie einen anderen Dienst aufrufen, um sicherzustellen, dass der Benutzername nicht bereits bei der Überprüfung der Anmeldeseite übernommen wurde). In diesem Fall können Sie zusätzliche Parameter an validate (Dienste usw.) übergeben.

Flow könnte der nächste sein: Daten in der Steuerung abrufen, Modell (Java Bean) erstellen, validate aufrufen, Fehlerliste (falls vorhanden) zurücksenden oder zur nächsten Ansicht weiterleiten. Das ist ein typischer Workflow von MVC-Anwendungen.

Oh, und machen Sie nichts statisch, machen Sie es nicht Singletons. Wenn Sie die Validierung für mehrere Controller freigeben, injizieren Sie einfach Ihren Validator. Schauen Sie sich spring framework an. Es könnte für Sie nützlich sein.