MVC de printemps: comment supprimer l'attribut session?
Exemple d'utilisation @SessionAttributes
ci-dessous. Comment effacer user
attribut de session après l'assistant terminé ? Dans mon exemple après un retour à /wizard0
l'attribut session existe toujours. J'ai essayé status.setComplete()
et session.removeAttribute("user")
mais ça ne fonctionne pas.
@Controller
@SessionAttributes("user")
public class UserWizard {
@RequestMapping(value = "/wizard0", method = RequestMethod.GET)
public String page1(Model model) {
if(!model.containsAttribute("user")) {
model.addAttribute("user", new User());
}
return "wizard/page1";
}
@RequestMapping(value = "/wizard1", method = RequestMethod.GET)
public String page2(@ModelAttribute User user) {
user.setFirstname(Utils.randomString());
return "wizard/page2";
}
@RequestMapping(value = "/wizard2", method = RequestMethod.GET)
public String page3(@ModelAttribute User user) {
user.setLastname(Utils.randomString());
return "wizard/page3";
}
@RequestMapping(value = "/finish", method = RequestMethod.GET)
public String page4(@ModelAttribute User user, HttpSession session, SessionStatus status) {
/**
* store User ...
*/
status.setComplete();
session.removeAttribute("user");
return "redirect:/home";
}
}
EDIT
Mon erreur. status.setComplete();
fonctionne bien. session.removeAttribute("user")
rien à faire ici.
17
demandé sur
marioosh
2013-08-13 16:34:31
1 réponses
Essayez d'utiliser WebRequest.removeAttribute
méthode au lieu de HttpSession.setAttribute
méthode (exemple 1). Ou une autre façon qui font exactement la même chose, vous pouvez utiliser 'SessionAttributeStore.cleanupAttribute " (exemple 2).
exemple 1
@RequestMapping(value = "/finish", method = RequestMethod.GET)
public String page4(@ModelAttribute User user, WebRequest request, SessionStatus status) {
/**
* store User ...
*/
status.setComplete();
request.removeAttribute("user", WebRequest.SCOPE_SESSION);
return "redirect:/home";
}
exemple 2
@RequestMapping(value = "/finish", method = RequestMethod.GET)
public String page4(@ModelAttribute User user, WebRequest request, SessionAttributeStore store, SessionStatus status) {
/**
* store User ...
*/
status.setComplete();
store.cleanupAttribute(request, "user");
return "redirect:/home";
}
10
répondu
michal.kreuzman
2013-08-15 22:50:26