Spring 3 référence nous enseigne:Quelle est la signification de l'annotation @ModelAttribute au niveau de l'argument de la méthode?
Lorsque vous placez sur une méthode paramètre ,
@ModelAttribute
associe un attribut modèle au paramètre de méthode spécifique, annoté
Je ne comprends pas sort magique, parce que je suis sûr que l'alias de cet objet modèle (valeur clé si vous utilisez ModelMap
comme type de retour) est passé à la vue après l'exécution de la méthode du gestionnaire de requêtes. Par conséquent, lorsque la méthode du gestionnaire de requêtes s'exécute, le nom de l'objet modèle ne peut pas être mappé au paramètre de la méthode. Pour résoudre cette contradiction je suis allé à stackoverflow et j'ai trouvé this exemple détaillé. L'auteur de l'exemple dit:
// Le modèle « personAttribute » a été transmis au contrôleur du JSP
Il semble, il est charmée par référence printemps ...
Pour dissiper les charmes, j'ai déployé son exemple d'application dans mon environnement et j'ai cruellement coupé l'annotation @ModelAttribute de la méthode MainController.saveEdit()
. En conséquence, l'application fonctionne sans aucun changement! Donc je conclus: l'annotation @ModelAttribute
n'est pas nécessaire pour passer les valeurs de champ du formulaire web aux champs de l'argument. Puis je suis resté à la question: quelle est la moyenne de @ModelAttribute
annotation? Si le seul moyen est de définir l'alias pour l'objet du modèle dans la vue, alors pourquoi mieux que l'ajout explicite de l'objet à ModelMap
?