我正在使用基于注释的 spring 3 mvc。
我在类级别和方法级别使用@sessionattribute 和@Modelattribute 注释来存储会话数据。
它工作正常。但
与会话对象属性同名的 http 请求属性值在会话对象中被覆盖。
如何避免这种情况?现在我必须切换到传统的 session.getAttribute 管理会话数据的方式,这在春季世界中并不令人印象深刻。
在控制器和视图中存储和检索会话数据的最佳实践是什么?
有什么帮助吗?
这是我的代码示例......(请原谅我的格式不正确......)
@控制器
@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() 覆盖,我不打算这样做......