Was sind die Vorteile von @ModelAttribute
und @Valid
?
Was sind die Unterschiede?
Ist es möglich, sie zusammen zu verwenden?
@ModelAttribute
wird verwendet, um einen Rückgabetyp einer Methode oder einer Methode einem benannten Modellattribut zuzuordnen. Siehe @ModelAttribute s JavaDoc. Dies ist eine Spring Annotation.
@Valid
ist eine Anmerkung, die ein Objekt für die JSR-303-Bean-Validierung kennzeichnet. Siehe @Valid s JavaDoc. Es ist ein Teil von JavaEE 6, aber ich denke, Hibernate hat eine frühere Implementierung, die die meisten Benutzer verwenden.
Der Vorteil der Verwendung von @ModelAttribute
besteht darin, dass Sie die Eingaben eines Formulars einer Bean zuordnen können. Der Vorteil von @Valid
besteht darin, dass Sie die JSR-303-Bean-Validierung verwenden können, um sicherzustellen, dass die erstellte Bean anhand bestimmter Regeln validiert wird.
Ja, Sie können @ModelAttribute
und @Valid
zusammen verwenden.
Die beste Methode zum Übertragen von Daten von einem Formular (sic-Ansicht) an ein Modellobjekt besteht darin, das typische / traditionelle MVC-Entwurfsmuster mit Spring zu verwenden. Mein persönlicher bevorzugter Weg ist ein Formular in einer JSP mit Spring JSTL <form:*>
Tags, mit einem modelAttribute
set. Verfügen Sie auf dem Controller über einen Handler, um den POST aus dem Formular mit dem übereinstimmenden @ModelAttribute
zu akzeptieren, bei dem es sich um eine Bean handelt, die die Eingabe des Formulars darstellt. Ich würde dann diese "Form Bean" zu einer Serviceebene weiterleiten, um einige Dinge zu tun, einschließlich der Übersetzung der "Form Bean" in beliebige Modelle, falls erforderlich (nicht notwendig, wenn das Formular Ihre Modellobjekte direkt erstellt) und Speichern / Aktualisieren von / etc über ein DAO. Dies ist nur ein Weg, um Dinge zu tun, aber es ist wahrscheinlich der Großteil dessen, was ich mit Spring in meinem täglichen Job mache.
Ich würde sehr empfehlen, die Spring-Referenzmaterialien zu lesen und den Tutorials zu folgen. Die Referenzmaterialien sind sehr gut geschrieben, leicht zu verstehen und enthalten viele Beispiele zu den verschiedenen Möglichkeiten, die Sie im Frühling machen können, und es gibt normalerweise eine ganze Reihe von Möglichkeiten, wie Sie Dinge im Frühling machen.
überprüfen Sie bitte den unteren Teil von Frühjahrs-Referenzdokumentation :
Zusätzlich zur Datenbindung können Sie die Validierung auch mit Ihrem eigenen benutzerdefinierten Validator aufrufen, indem Sie dasselbe BindingResult übergeben, das zum Aufzeichnen von Datenbindungsfehlern verwendet wurde. Dadurch können Datenbindungs- und Validierungsfehler an einer Stelle gesammelt und anschließend an den Benutzer zurückgemeldet werden:
%Vor%Sie können die Validierung auch automatisch durch Hinzufügen der JSR-303 @Valid Annotation aufrufen lassen:
%Vor%Tags und Links spring spring-mvc spring-data spring-annotations