Bonjour à tous,
Est-ce que quelqu'un pourrait m'expliquer le fonctionnement de l'annotation @ModelAttribute et comment l'utiliser (bonnes pratiques) ?
Pour moi une méthode annotée @ModelAttribute est une méthode qui est appelée avant l'appel de la méthode @RequestMapping.
Il permet notamment de faire passer un objet à une vue afin de populer un formulaire.
J'ai l'impression que pour le retour d'un formulaire, il récupère l'objet du formulaire par cet intermédiaire, et lui affecte les nouvelles valeurs... Est-ce correct ?
Soit la signature suivante (qui est tiré au hasard... de mon code ^^) :Dans cette méthode je renvois "new RequirementDetails()" si la méthode de la requete est "POST" (retour d'un formulaire) pour éviter d'effectuer une requête supplémentaire en base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 @ModelAttribute("requirement_details") public RequirementDetails populateRequirementDetails(HttpServletRequest servletRequest)
Mon objet "RequirementDetails" possède une collection de "Compliance".
Dans que la liste est vide à l'affichage du formulaire ET à sa soumission, tout se passe bien.
Par contre lorsque la liste possède des éléments à l'affichage et que j'en supprime avant la soumission, j'ai une erreurOn dirait qu'il fait un "setComplianceList[0] = <item de la liste>" au lieu de "setComplianceList = <ma nouvelle liste>"...Invalid property 'compliancesList[0]' [...] Cannot get element with index 0 from Set of size 0, accessed using property path 'compliancesList[0]'] with root cause
Et moi ça m'embête![]()
Partager