我有一个类:
@Controller(value = "services")
@RequestMapping("/")
@SessionAttributes({"SESSIONID"})
public class Services {
@RequestMapping("/user/loginStatic")
@ModelAttribute("SESSIONID")
public LoginResponseBean loginStatic(String username){
LoginResponseBean result = otherClass.login(username);
retrun result;
}
}
我的问题:此代码导致在会话中存储“result”对象,但是 我想在会话中存储“result.getSessionId()”。
我无法添加“模型模型”来输入“loginStatic”方法的参数,因为它会改变方法标记,我现在不能这样做。 而且我也无法明确地获得http会话并在其中设置属性(因为其他一些副作用)。 我怎么能这样做? 感谢..
答案 0 :(得分:1)
您可以使用<mvc:interceptors/>
注册一个适用于一个,多个或所有控制器的自定义HandlerInterceptor
。例如,以下是如何为所有控制器注册拦截器:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="a.b.c.MyHandlerInterceptorAdapter"/>
</mvc:interceptor>
</mvc:interceptors>
有关详细信息,另请参阅mvc-config-interceptors
和mvc-handlermapping-interceptor
文档。
注意:链接了Spring 3.2文档,因此您可能希望更改URL中的版本号以匹配您正在使用的Spring版本。
答案 1 :(得分:0)
在这里查看接受的答案: How do I get the session object in spring
您可以按照此处的描述获取会话对象并添加您的属性。