是否可以跨多个控制器访问带有Spring MVC注释的会话变量?
问题内容:
我有一个运行Spring 3.0并使用Spring-MVC的Web应用程序。我有几个这样设置的控制器:
@Controller
@RequestMapping("/admin")
@SessionAttributes({"clientLogin", "selectTab", "user", "redirectUrl"})
public class AdminController {
...
}
@Controller
@SessionAttributes({"clientLogin", "selectTab", "user", "redirectUrl"})
public class PublicController {
....
}
我可以使用以下方法将带注释的变量添加到ModelMap中:
map.addAttribute("user", "Bob");
可以很好地将变量保留在当前控制器中;我可以通过该控制器中任何其他方法从modelMap访问var。但是,当用户点击另一个控制器中的页面时,即使@SessionAttributes中列出了相同的变量,第二个控制器中也无法使用该变量。
是否可以使用注释跨多个控制器访问这些注释变量?
问题答案:
不,这是不可能的-在我看来,SessionAttributes的名称很错误。
如果要在不同的控制器之间共享这些属性,则可以使用以下命令将它们显式放入会话中:
session.setAttribute()