Spring-Annotationen @ModelAttribute und @Gültig
Was sind die Vorteile der Verwendung von @ModelAttribute
und @Valid
?
Welches sind die Unterschiede?
Ist es möglich diese zusammen?
- Versuchen Sie bitte, eine Frage stellen.
- Sie sind miteinander verwandt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
@ModelAttribute
wird verwendet, um anzeigen/binden, der einen parameter einer Methode oder Methode Rückgabetyp zu einer benannten model-Attribut. Sehen @ModelAttributes JavaDoc. Dies ist eine Spring-annotation.@Valid
ist eine annotation markiert ein Objekt für JSR-303 bean validation. Sehen @Gültigs JavaDoc. Es ist Teil von Java ee 6, aber ich denke, Hibernate hat eine frühere Umsetzung, dass die meisten Menschen verwenden statt.Den Vorteil der Verwendung von
@ModelAttribute
ist, dass Sie können die Karte mit einem Formular-Eingaben an eine Bohne. Der Vorteil@Valid
ist, dass Sie nutzen können, JSR-303 bean-Validierung, um sicherzustellen, dass die Bohne, die gemacht überprüft wird gegen einige Regeln.Ja, Sie können mit
@ModelAttribute
und@Valid
zusammen.Der beste Weg, um Daten aus einem Formular (sic-Ansicht), um die ein Model-Objekt, ist Folgen Sie die typische/traditionelle MVC-design pattern mit Feder. Meine persönliche bevorzugte Weg ist, um ein Formular in einer JSP mit Feder JSTL
<form:*>
- tags, mit einermodelAttribute
gesetzt. Auf den Controller, einen handler zu akzeptieren, die POST aus dem Formular, einen passenden@ModelAttribute
ist eine Bohne, die für die form der Eingabe. Ich würde dann passieren, dass die "Form Bean" zu einer service-Schicht, einige Dinge zu tun, einschließlich der übersetzung der "Form-Beans" in alle Modelle, falls erforderlich (nicht erforderlich, wenn die form ist die Erstellung Ihrer Modell-Objekte direkt) und speichern/aktualisieren von/etc über ein DAO. Dies ist aber ein Weg, Dinge zu tun, aber es ist wohl der Großteil von dem, was ich mit Frühling in meinen Tag-zu-Tag-job.Ich würde hoch empfehlen das Lesen der Frühlings-Referenz-Materialien und nach den tutorials. Die Referenzmaterialien sind sehr gut geschrieben, leicht zu Folgen und enthält eine Menge von Beispielen auf die verschiedenen Möglichkeiten, wie Sie Dinge machen können, die im Frühjahr, und es sind in der Regel durchaus ein paar Möglichkeiten auf, wie Sie Dinge tun im Frühjahr.
@Valid
wo ich arbeite, weil wir tun nicht form-Fehler neben den Steuerelementen aus unserer Sicht (wir schmeißen unsere form-überprüfungs-Fehlern bis oben in einer Liste), und Sie können nicht kontrollieren, die Bestellung durch die JSR-303 validation-Fehler auftreten. Diese Entscheidung wurde auch gemacht, Jahre bevor ich anfing, hier zu arbeiten, so war ich nicht ein Teil von Ihr. Ich persönlich bevorzuge JSR-303 validation aufgrund seiner Benutzerfreundlichkeit.@ModelAttribute
in diesem Beispiel impliziert ist. Es ist, als ob es dort war. Schauen Sie inHandlerMethodArgumentResolver
.bitte überprüfen Sie den unteren Teil her spring reference Dokumentation:
Neben der Datenbindung können Sie auch aufrufen, Validierung verwenden Sie Ihre eigenen benutzerdefinierten validator übergeben die gleichen BindingResult, die verwendet wurde, die Aufzeichnung von Daten verbindlich-Fehler. Das ermöglicht für die Datenbindung und-Validierung, die Fehler gesammelt werden und anschließend berichtet, zurück zu den Benutzer:
Oder Sie können die Validierung automatisch aufgerufen, indem die JSR-303 @Valid annotation: