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