Comment faire pour réinitialiser un @ModelAttribute dans Spring MVC, après qu'elle a été traitée dans le contrôleur?
J'ai défini un @ModelAttribute("monmodèle")
@ModelAttribute("mymodel")
MyModel mymodel() {
MyModel mymodel = new MyModel();
return mymodel;
}
@RequestMapping(value = "/save", method = RequestMethod.POST)
public final void save(@ModelAttribute("mymodel") MyModel mymodel,
final BindingResult binding,
final HttpServletRequest request,
final ModelMap modelMap) throws Exception {
modelService.save(mymodel);
//try to reset the model --> doesn't work!!!
myModel = new MyModel();
}
Le problème est que, même si j'ai du réinitialiser le modèle dans la méthode save, si je recharge la page, après une opération de sauvegarde et enregistrer un deuxième temps, le modèle contient toutes les valeurs de la précédente myModel
.
Comment puis-je réinitialiser après qu'elle a été traitée?
Je n'ai jamais eu cette expérience, je n'ai eu besoin d'écrire une méthode pour réinitialiser un
Ils sont tous les deux nommés "monmodèle"! Méthodes avec @ModelAttribute() doit être pour les données de référence. La forme de la sauvegarde des objets devrait être @ModelAttribute() dans un @RequestMapping méthode.
ModelAttribute
. Êtes-vous sûr de ne pas soumettre à nouveau la même demande POST deux fois?Ils sont tous les deux nommés "monmodèle"! Méthodes avec @ModelAttribute() doit être pour les données de référence. La forme de la sauvegarde des objets devrait être @ModelAttribute() dans un @RequestMapping méthode.
OriginalL'auteur HHWilchevsky | 2011-07-29
Vous devez vous connecter pour publier un commentaire.
À moins que je m'ennuie de ma deviner, c'est parce que
myModel = new MyModel();
va seulement pour réinitialiser la référence au sein de la méthode, de la même manière que l'obtention d'un
MyModel
à partir d'unList<MyModel>
et puis l'appel demyModel = new MyModel();
ne changerait pas l'élément dans la Liste, uniquement de votre référentiel local.Vous aurez très probablement besoin de mettre la nouvelle Monmodèle() dans le modèle ou modelMap.
La redirection après le post motif peut également être utile pour vous ici. Votre méthode POST
return "redirect:originalpage.htm"
Cela devrait recharger la page originale fraîche, et signifie également que si vous cliquer sur "actualiser" vous n'aurez pas à les soumettre de nouveau le POSTE, l'enregistrement de votre objet deux fois.
OriginalL'auteur Russell
Je ne ferais pas comme ça.
Essayez de régler votre modèle dans la demande comme :
OriginalL'auteur blong824
J'ai été en cours d'exécution dans un semblable problème de même, tandis que bricoler avec les BookCatalog de Portlets dans l'Action. Ma solution a été de réinitialiser manuellement à l'aide du Modèle.addAttribute(). Par exemple:
OriginalL'auteur Justin Wrobel