Wie ordnet Spring 2.5 die eingehenden Anforderungsdaten dem ModelAttribute-Befehl zu?

StackOverflow https://stackoverflow.com/questions/418178

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe Spring 2.0 verwendet und verwende jetzt Spring 2.5. Natürlich hat Spring 2.5 den Web-Controllern das Leben sehr erleichtert.Mir kommt immer wieder die Frage in den Sinn, dass wir in 2.0 die Befehlsklasse und dementsprechend den AbstractFormController festlegen mussten, der zum Auffüllen dieses Befehlsobjekts für uns verwendet wurde.In Spring 2.5 machen wir das nicht. Woher wissen wir also, welche Klasse wir verwenden sollen?Hängt es von der Art des Parameters ab, dem wir @ModelAttribute("command") mit Anmerkungen versehen haben?

Wenn ja, teilen Sie mir bitte eine „Utils“-Klasse mit, die den genauen Mechanismus bereitstellt, mit dem ich HttpRequest und den Klassennamen (oder das Klassenobjekt) übergeben kann und der mir das ausgefüllte Objekt zurückgibt!

Ich hoffe, Sie haben meine Frage verstanden.

Dank im Voraus.

War es hilfreich?

Lösung

Die Web-MVC-Annotationsbindung basiert schließlich auf einer

org.springframework.beans.AbstractPropertyAccessor

das zwei konkrete Implementierungen hat:

org.springframework.beans.beanwrapperimpl org.springframework.bean.directfieldAccessor

Beide akzeptieren ein Java-Objekt, das das Ziel ist, für das die Eigenschaften festgelegt werden.

Der erste, BeanWrapperImpl, verwendet die Setter/Getter-Methoden eines Java-Objekts, während der andere die Felder direkt festlegt.Beide prüfen, ob die Methoden/Felder öffentlich/zugänglich sind. Andernfalls verwenden Sie setAccessible(true) von Reflection, um sicherzustellen, dass sie festgelegt werden können.

Vom Web MVC wird eine Instanz von AbstractPropertyAccessor erstellt und die Parameterzuordnung eines HttpRequest wird an AbstractPropertyAccessor#setPropertyValues ​​übergeben.

Nach dem Aufruf wird das Java-Objekt mit dem Inhalt der Karte gefüllt

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top