我正在尝试清除会话。以下是我编写以使用SessionStatus
检查的一些示例代码。
@Controller
@SessionAttributes(value={"sessAttr1","sessAttr2","sessAttr3"})
public class SessionController {
@RequestMapping(value="index")
public ModelAndView populateSession(){
ModelAndView modelView = new ModelAndView("home");
modelView.addObject("sessAttr1","This value is added in a session 1");
modelView.addObject("sessAttr2","This value is added in a session 2");
modelView.addObject("sessAttr3","This value is added in a session 3");
return modelView;
}
@RequestMapping(value="home1")
public String populateHomeSession(SessionStatus status){
status.setComplete();
return "home1";
}
}
当显示
home1
屏幕时,我仍然可以看到会话对象没有被清除。如果尝试以下操作:${sessAttr1 }
,则可以在home1
屏幕中读取会话值。请说明为什么它不起作用。
编辑
我使用
<a href="home1">Next</a>
从一个屏幕导航到另一个屏幕。这与我面临的这个问题有关吗? 最佳答案
setComplete
用于在控制器处理完请求后将会话属性标记为不需要的会话:它不会立即修改会话,并且总体来说听起来不适合您的用例。它打算用于POST之类的情况,该数据打算在当前请求期间使用,但将来不应使用。
http://forum.spring.io/forum/spring-projects/web/108339-problem-with-sessionattribute-and-sessionstatus