Comment Spring 2.5 mappe-t-il les données de la demande entrante à la commande ModelAttribute?

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

  •  03-07-2019
  •  | 
  •  

Question

J’ai utilisé Spring 2.0 et maintenant, j’utilise Spring 2.5 Naturellement, Spring 2.5 a rendu la vie beaucoup plus facile en ce qui concerne les contrôleurs Web. La question me revient constamment à l'esprit qu'en 2.0, nous devions définir la classe de commande et donc AbstractFormController utilisé pour renseigner cet objet de commande pour nous. Au printemps 2.5, nous ne le faisons pas. Comment savoir quelle classe utiliser? Cela dépend-il du type de paramètre que nous avons annoté @ModelAttribute ("commande") à?

Si vous avez répondu «oui», merci de me le faire savoir. classe qui fournit le mécanisme exact dans lequel je peux passer HttpRequest et le nom de la classe (ou objet Class) et qui me renverrait l'objet rempli!

J'espère que vous avez ma question.

Merci d'avance.

Était-ce utile?

La solution

La liaison d'annotations Web MVC repose finalement sur un

org.springframework.beans.AbstractPropertyAccessor

qui a deux implémentations concrètes:

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

Les deux acceptent un objet Java, qui sera la cible pour définir les propriétés.

Le premier, BeanWrapperImpl utilise les méthodes setter / getter d’un objet java, tandis que l’autre définit les champs directement. Les deux vérifient que les méthodes / champs sont publics / accessibles et, dans le cas contraire, utilisez setAccessible (true) de reflection pour vous assurer qu'il peut être défini.

A partir du Web MVC, une instance de AbstractPropertyAccessor est créée et la mappe de paramètres d'une requête HttpRequest est transmise à AbstractPropertyAccessor # setPropertyValues.

Après l'appel, l'objet Java est rempli avec tout ce qui se trouve sur la carte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top