In che modo Spring 2.5 associa i dati della richiesta in arrivo al comando ModelAttribute?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Ho usato Spring 2.0 e ora sto usando Spring 2.5 Natualmente, Spring 2.5 ha reso la vita molto facile per quanto riguarda i controller Web. Mi viene in mente la domanda che nel 2.0 abbiamo dovuto impostare la classe di comando e di conseguenza AbstractFormController ha usato per popolare quell'oggetto comando per noi. Nella primavera 2.5 non lo facciamo, quindi come viene a sapere quale classe utilizzare? Dipende dal tipo di parametro in cui abbiamo annotato @ModelAttribute (" command ") in?

In caso affermativo, per favore fatemi sapere qualsiasi " Utilità " classe che fornisce l'esatto meccanismo in cui posso passare HttpRequest e nome classe (o oggetto Class) e che mi restituirebbe l'oggetto popolato!

Spero che tu abbia la mia domanda.

Grazie in anticipo.

È stato utile?

Soluzione

Il binding delle annotazioni Web MVC alla fine si basa su un

org.springframework.beans.AbstractPropertyAccessor

che ha due implementazioni concrete:

org.springframework.beans.BeanWrapperImpl org.springframework.beans.DirectFieldAccessor

Entrambi accettano un oggetto Java, che sarà la destinazione per cui impostare le proprietà.

Il primo, BeanWrapperImpl utilizza i metodi setter / getter di un oggetto java, mentre l'altro imposta direttamente i campi. Entrambi verificano che i metodi / campi siano pubblici / accessibili e, in caso contrario, utilizzano il setAccessible (true) di reflection per assicurarsi che possa essere impostato.

Dal Web MVC, viene creata un'istanza di AbstractPropertyAccessor e la mappa dei parametri di un HttpRequest viene passata a AbstractPropertyAccessor # setPropertyValues.

Dopo la chiamata, l'oggetto java viene popolato con tutto ciò che si trova nella mappa

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top