Während wir über MVC sprechen, ist es immer am besten, dass zu prüfen, wie die App entwickelt, "Input" von mehr kommen kann als ein Ort irgendwann.
- Benutzer
- Service-Aufruf
- Datei
- andere
In diesem Fall würden wir nicht die Validierungsmechanismen in die Ansicht oder den Controller bauen wollen, aber in einer anderen Komponente mit dem der Controller nur arbeiten/integrieren würde.
Validierung kann eine Querschnittsanliegen sein (aber nicht immer)
Im Idealfall würden wir die Validierung der eingehenden Daten vermeiden wollen Duplizieren vor allem, wenn die Daten in der gleichen Art und Weise immer gültig sind. Das Duplizieren der Validierung kann zu Inkonsistenzen führen. Stellen Sie sich vor, dass Daten von der Benutzeroberfläche ungültig sind, aber dieselben Daten von einem Serviceaufruf als "OK" betrachtet werden.
Es gibt eine Reihe von Möglichkeiten, wie Sie die Validierungslogik aus Ihrer Sicht trennen kann:
- Beschriften Bohnen für JSR-303
- benutzerdefinierte Validierung Anmerkungen erstellen (Ihre definierten regex die abstrahierende) und/oder die Verwendung Bibliotheken, die einige basic ones
- Dedicated Service
bieten
Fehler bei der Validierung beheben
Ich kann sehen, dass Sie eine Ausnahme auslösen, wenn Sie einen Validierungsfehler haben. Betrachten Sie den fantastischen Artikel von Martin Fowler. Der Vorschlag ist, dass ein Validierungsfehler erwartet werden kann und kein Exception
Fall ist. Er schlägt auch einen Benachrichtigungsansatz vor.
Ein weiterer Vorteil eines Benachrichtigungsansatzes besteht darin, dass Ihr dedizierter Validierungsdienst/Tier mehrere Fehler bei der Validierung unterstützen kann. Dies würde es Ihrer Sicht ermöglichen, mehrere Felder oder Ihre API hervorzuheben, um eine Liste von Fehlern zurückzugeben.