Java 在SpringMVC中,如何在没有模型对象的情况下向会话添加属性?
我有一门课,像:Java 在SpringMVC中,如何在没有模型对象的情况下向会话添加属性?,java,spring,spring-mvc,Java,Spring,Spring Mvc,我有一门课,像: @Controller(value = "services") @RequestMapping("/") @SessionAttributes({"SESSIONID"}) public class Services { @RequestMapping("/user/loginStatic") @ModelAttribute("SESSIONID") public LoginResponseBean loginStatic(String username){
@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()”。
我不能将“Model Model”添加到“loginStatic”方法的输入参数中,因为它会显著更改方法,而我现在不能这样做。
而且我不能明确地获取http会话并在其中设置属性(因为其他一些副作用)。
我怎么能这么做?
谢谢。请在此处查看公认的答案:
您可以按此处所述获取会话对象并添加属性。在此处查看接受的答案: 您可以按此处所述获取会话对象并添加属性。您可以使用
注册将应用于一个、多个或所有控制器的自定义。例如,以下是如何为所有控制器注册拦截器:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="a.b.c.MyHandlerInterceptorAdapter"/>
</mvc:interceptor>
</mvc:interceptors>
有关更多详细信息,请参阅和文档
注意:Spring 3.2文档已链接,因此您可能希望更改URL中的版本号,以匹配您正在使用的Spring版本。您可以使用
注册一个将应用于一个、多个或所有控制器的自定义。例如,以下是如何为所有控制器注册拦截器:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="a.b.c.MyHandlerInterceptorAdapter"/>
</mvc:interceptor>
</mvc:interceptors>
有关更多详细信息,请参阅和文档
注意:Spring 3.2文档已链接,因此您可能需要更改URL中的版本号以匹配您正在使用的Spring版本。谢谢您的建议;但这并不能解决我的问题,因为我不应该(通过使用“(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())显式地获取“会话”。相反,我正在寻找另一个解决方案(如果存在!!),谢谢你的建议;但这并不能解决我的问题,因为我不应该(通过使用(ServletRequestAttributes)RequestContextHolder.currentRequestAttributes())。相反,我正在寻找另一个解决方案(如果存在!!)不,您必须在
loginStatic
的输入参数中添加ModelMap model
,然后添加model.addAttribute(“sessionId”,result.getSeesionId())
可以完成您的工作。我认为没有其他方法。不,您必须在loginStatic
的输入参数中添加ModelMap model
,然后model.addAttribute(“sessionId”,result.getSeesionId())
可以完成您的工作。我认为没有其他方法。