mar*_*osh 17 spring-mvc spring-3
@SessionAttributes以下使用示例.如何user在向导完成后清除会话属性?在我的例子中,返回/wizard0session属性后仍然存在.我试过了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";
}
}
Run Code Online (Sandbox Code Playgroud)
我的错.status.setComplete();效果很好.session.removeAttribute("user")这里没什么可做的.
mic*_*man 10
尝试使用WebRequest.removeAttribute方法而不是HttpSession.setAttribute方法(示例1).或者使用'SessionAttributeStore.cleanupAttribute'(示例2)完全相同的另一种方式.
例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";
}
Run Code Online (Sandbox Code Playgroud)
例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";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39927 次 |
| 最近记录: |