【发布时间】:2015-03-20 19:16:35
【问题描述】:
我真的需要你的帮助。当我突然不得不离开计算机时,我像往常一样使用我的 portlet 应用程序。当我返回时,出现 NullPointerException。好的,这是为什么呢?嗯......我的会话不包含它应该持有的对象。所以,我可能会失去一些东西,但这就是我一直看 SessionAttributes 的方式。
我的控制器是这样注释的:
@SessionAttributes({
SOME_ATTR
})
然后我有一个带有以下签名的方法:
@Valid @ModelAttribute(SOME_ATTR) SomeObject someObject
还有我的会话属性的初始化方法:
@ModelAttribute(SOME_ATTR)
public SomeObject getSomeEmptyObject() {
return someUtils.createSomeObject();
}
此时我调试我的应用程序时发现:
- 手动查看会话,里面什么都没有
- 表单已正确绑定到
someObject
所以我的两个大问题是:
- 为什么 Spring 不将
someObject也设置为会话? - 当会话失效时,为什么不调用
getSomeEmptyObject()来填充空白空间?
谢谢转发!
【问题讨论】:
-
您能否确认您正尝试从使用@SessionAttribute({SOME_ATTR}) 注释的同一控制器访问 SOME_ATTR?更重要的是,getSomeEmptyObject 在第一次调用控制器的处理方法之前被调用。但是只有在对处理程序方法的第一次调用完成之后并且在将控制权传递给视图 (JSP) 之前,对象才会从模型复制到 HttpSession。这个有帮助吗?我会尽力为您找到一些有关它的资源。
-
这里有一些东西:intertech.com/Blog/…
标签: java session spring-mvc model liferay