0

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

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

它工作正常。但

与会话对象属性同名的 http 请求属性值在会话对象中被覆盖。

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

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

有什么帮助吗?

4

1 回答 1

0

这是我的代码示例......(请原谅我的格式不正确......)

@控制器

@SessionAttributes({ "用户" })

@RequestMapping("/登录")

公共类 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 ); 

@控制器

@SessionAttributes({ "suser" })

@RequestMapping("/用户")

公共类 UserController 扩展 SuperController{

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

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

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

由于我使用的是@sessionAttributes,所以在它调用 createTeamMember 之前,user.firstName 被 memberUserForm.getFirstName() 覆盖,我不打算这样做......

于 2013-06-24T15:54:54.930 回答