是否可以跨多个控制器访问Spring MVC带注释的会话变量?

Tra*_*zed 4 session spring controller session-variables 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 {
....
}
Run Code Online (Sandbox Code Playgroud)

我可以将带注释的变量添加到ModelMap中

map.addAttribute("user", "Bob");
Run Code Online (Sandbox Code Playgroud)

这样可以将变量保存在当前控制器中; 我可以从该控制器中的任何其他方法访问modelMap中的var.但是当用户访问另一个Controller中的页面时,即使@SessionAttributes中列出了相同的变量,它也不会在第二个控制器中可用.

是否可以使用注释跨多个控制器访问这些带注释的变量?

Dan*_*iuc 5

不,这是不可能的 - 在我看来,SessionAttributes的名字很糟糕.

如果要跨不同控制器共享这些属性,可以使用以下方法将它们显式地放入会话中:

session.setAttribute()