@SessionAttribute未设置

时间:2015-03-20 19:16:36

标签: java session spring-mvc model liferay

我真的需要你的帮助。当我突然离开电脑时,我像往常一样使用我的portlet应用程序。当我返回时,出现NullPointerException。好的,为什么呢?嗯...我的会话不包含它应该持有的对象。所以,我可能会失去一些东西,但在这里我总是看看SessionAttributes。

我的控制器注释如此:

@SessionAttributes({
    SOME_ATTR
})

然后我有一个带有以下签名的方法:

@Valid @ModelAttribute(SOME_ATTR) SomeObject someObject

还有我的会话属性的init方法:

@ModelAttribute(SOME_ATTR)
public SomeObject getSomeEmptyObject() {
    return someUtils.createSomeObject();
}

此时调试我的应用程序后,我发现:

  • 手动查看会话,其中没有任何内容
  • 表单已正确绑定到someObject

所以我的两大问题是:

  • 为什么Spring还没有将someObject设置为会话?
  • 当会话无效时,为什么没有getSomeEmptyObject()调用来填补空白区域?

向前谢谢!

2 个答案:

答案 0 :(得分:0)

查看HttpSessionBindingListenerHttpSessionAttributeListener。如果SomeObject是您控制的类,则可以实现HttpSessionBindingListener,否则您可能需要HttpSessionAttributeListener。

This SO posting非常清楚。

答案 1 :(得分:0)

那么,您是否以适当的形式设置了会话属性:

@SessionAttributes(value = {"user", "register"})

这就是我能想到的一切。