【发布时间】:2013-08-26 05:55:47
【问题描述】:
我使用过 Spring MVC。我将会话属性值设置为
@RequestMapping(value = "/home", method = RequestMethod.GET)
public String initHome(Model model) {
if (!model.containsAttribute("clientObject")) {
model.addAttribute("clientObject", createDefaultClient());
}
return "homeMenu";
}
如果我单击主菜单 url(/home),它工作正常。但如果我没有去 home 表示它显示错误,因为“需要会话属性 clientObject”
所以我决定在控制器的构造函数中设置会话属性
@Autowired
public MyController(Model model) {
if (!model.containsAttribute("clientObject")) {
model.addAttribute("clientObject", createDefaultClient());
}
}
它也说错误
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'myController'
我尝试使用RequestMapping设置也喜欢
@RequestMapping(value = "/", method = RequestMethod.GET)
public void initController(Model model) {
if (!model.containsAttribute("clientObject")) {
model.addAttribute("clientObject", createDefaultClient());
}
}
这个方法最初也没有被调用 我的硬币控制器看起来像
@RequestMapping("/sample")
public class MyController {
..
..
是否可以在控制器的构造函数中设置 sessionAttribute 值?或任何其他方式来初始设置会话属性?
提前感谢您的帮助。
【问题讨论】:
-
你的用例是什么?
-
抱歉用例是什么意思?我必须在加载控制器时设置会话属性值
-
你不能。控制器可能会在与用户的第一次会话开始之前很久就被加载。控制器的生命周期比会话的生命周期更宽。
-
那么如何设置控制器中所有请求映射使用的会话属性值
标签: java spring spring-mvc