Je charge un objet utilisateur appelant un service, puis stocke cet utilisateur en tant qu'objet de commande dans le modèle sur GET dans le contrôleur. Cet objet utilisateur a de nombreuses propriétés qui ne sont pas mappées dans la page jsp. Après avoir envoyé le formulaire, j'obtiens l'objet de commande dans le contrôleur sur POST. Mais bizarrement, je ne vois que les propriétés de l'objet de commande qui sont mappées à la page jsp. Toutes les autres propriétés qui étaient là quand je charge l'objet sont perdues. J'ai besoin de toutes les propriétés dans l'objet pour pouvoir l'enregistrer avec succès dans la base de données.Objet de commande Spring MVC Annotation Based Controller perdant des valeurs sur POST
Quelqu'un peut-il m'aider à comprendre ce problème? Merci!
Mise à jour
J'ajoute du code pour mieux le comprendre. Dans le gestionnaire POST, je m'attendais à ce que l'objet de commande possède toutes les propriétés chargées dans le gestionnaire GET en plus des propriétés liées à jsp. Au lieu de cela, je perds toutes les propriétés sauf celles qui sont liées au jsp. Est-ce que je fais quelque chose de mal ici?
@RequestMapping(method = RequestMethod.GET)
public String showForm(ModelMap model, HttpSession session, HttpServletRequest request) throws Exception {
UserBean user = Util.getUser(session);
UserBean command = (UserBean)userProfileService.loadByUserName(user.getUserName());
model.addAttribute("command", command);
return formView;
}
@RequestMapping(method = RequestMethod.POST)
public String onSubmit(@ModelAttribute("command") UserBean command, BindingResult result, HttpSession session) throws Exception {
UserBean user = (UserBean) command;
userProfileService.saveUser(user);
return "successView";
}
Mise à jour
J'ajoute du code pour mieux le comprendre. Dans le gestionnaire POST, je m'attendais à ce que l'objet de commande possède toutes les propriétés chargées dans le gestionnaire GET en plus des propriétés liées à jsp. Au lieu de cela, je perds toutes les propriétés sauf celles qui sont liées au jsp. Est-ce que je fais quelque chose de mal ici?
@RequestMapping(method = RequestMethod.GET) public String showForm(ModelMap model, HttpSession session, HttpServletRequest request) throws Exception { UserBean user = Util.getUser(session); UserBean command = (UserBean)userProfileService.loadByUserName(user.getUserName()); model.addAttribute("command", command); return formView; }
@RequestMapping(method = RequestMethod.POST) public String onSubmit(@ModelAttribute("command") UserBean command, BindingResult result, HttpSession session) throws Exception { UserBean user = (UserBean) command; userProfileService.saveUser(user); return "successView"; }
Mise à jour
Si je stocke l'objet de commande en session comment le jsp lier les propeties. Je pensais que j'avais besoin de le stocker dans le modèle pour cela? Pourriez-vous expliquer s'il vous plaît.
Mise à jour
stocker l'objet de commande en session permet de résoudre le problème. J'ai été en mesure de le stocker en utilisant
@SessionAttributes ("command")
Merci beaucoup!
Lors de l'ajout d'informations ne pas ajouter une réponse. Vous devriez plutôt mettre à jour votre question. Je l'ai fait cette fois pour vous (vous devriez maintenant supprimer la 'réponse'). – Bozho