如何在spring mvc中没有模型对象的情况下向会话添加属性?

时间:2013-01-09 07:29:37

标签: java spring spring-mvc

我有一个类:

@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会话并在其中设置属性(因为其他一些副作用)。 我怎么能这样做? 感谢..

2 个答案:

答案 0 :(得分:1)

您可以使用<mvc:interceptors/>注册一个适用于一个,多个或所有控制器的自定义HandlerInterceptor。例如,以下是如何为所有控制器注册拦截器:

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="a.b.c.MyHandlerInterceptorAdapter"/>
    </mvc:interceptor>
</mvc:interceptors>

有关详细信息,另请参阅mvc-config-interceptorsmvc-handlermapping-interceptor文档。

注意:链接了Spring 3.2文档,因此您可能希望更改URL中的版本号以匹配您正在使用的Spring版本。

答案 1 :(得分:0)

在这里查看接受的答案: How do I get the session object in spring

您可以按照此处的描述获取会话对象并添加您的属性。