【发布时间】:2013-08-15 01:51:36
【问题描述】:
下面使用@SessionAttributes 的示例。向导完成后如何清除user会话属性?在我的示例中返回/wizard0 后会话属性仍然存在。我试过status.setComplete() 和session.removeAttribute("user"),但是没用。
@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";
}
}
编辑
我的错。 status.setComplete(); 效果很好。 session.removeAttribute("user") 在这里没什么可做的。
【问题讨论】:
-
status.setComplete();应该清理你的SessionAttribute。也许您正在将用户设置在另一个类中,或者您的会话配置有问题... -
您确认会话包含您添加的相同用户对象吗?在会话删除之前和之前检查用户对象的哈希码
-
对不起。我的错误。
status.setComplete()不过效果很好。我的完成按钮未正确映射-根本没有调用方法page4,所以这是个问题。我看到session.removeAttribute("user") / HttpSession与@SessionAttributes无关。关闭/删除/等问题...再次抱歉。
标签: spring-mvc spring-3