如何在春季3存储会话数据

时间:2013-06-24 04:00:00

标签: spring session store

我正在使用spring 3 mvc,基于注释。

我使用@sessionattribute和@Modelattribute注释在类级别和方法级别存储会话数据。

工作正常。 BUT

会话对象中重写了与会话对象属性同名的http请求属性值。

如何避免这种情况?现在我必须切换到传统的session.getAttribute管理会话数据的方式在春天世界并不令人印象深刻。

在控制器和视图中存储和检索会话数据的最佳做法是什么?

有任何帮助吗?

1 个答案:

答案 0 :(得分:0)

以下是我的代码示例...(请原谅我的格式错误...)

@Controller

@SessionAttributes({“user”})

@RequestMapping( “/登录”)

public class LoginController扩展了SuperController {

@RequestMapping(value = "/submitLogin", method = RequestMethod.POST)
public ModelAndView login(
        @Valid @ModelAttribute("loginForm") LoginForm loginForm,
        BindingResult bindingResult, HttpSession session, Model model) {

                    // Adding user object to session after login.
                    modelAndView.addObject("user", user ); 

@Controller

@SessionAttributes({“suser”})

@RequestMapping( “/用户”)

public class UserController扩展了SuperController {

@RequestMapping(value = "/createTeamMember", method = RequestMethod.POST)
public ModelAndView createTeamMember(@Valid @ModelAttribute("userForm"),  MemberUserForm memberUserForm,  BindingResult bindingResult, @ModelAttribute("user") User user) {

memberUserForm.getFirstName(); //新团队成员的名字。

user.getFirstName(); //登录用户的名字(与上述不同)。

由于我正在使用@sessionAttributes,因此在调用createTeamMember之前,user.firstName将被memberUserForm.getFirstName()覆盖,而我不打算这样做....