2013-06-24 55 views
0

我使用spring 3 mvc,基於註解。如何在spring 3中存儲會話數據

我使用@sessionattribute和@Modelattribute註釋使用類級別和方法級別存儲會話數據。

它工作正常。但是

具有與會話對象屬性相同名稱的http請求屬性值正在會話對象中被覆蓋。

如何避免這種情況?現在我不得不切換到傳統的session.getAttribute管理會話數據的方式在春天並不令人印象深刻。

在控制器和視圖中存儲和檢索會話數據的最佳做法是什麼?

任何幫助?

+0

你能不能給我們這些小的代碼示例'具有相同名稱的會話對象被覆蓋'並澄清你想要實現的內容 – gerrytan

回答

0

這裏是我的代碼示例是什麼?(請原諒我糟糕的格式...)

@Controller

@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); 

@Controller

@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() ; //新團隊成員的名字。

user.getFirstName(); //登錄用戶的名字(與上面不一樣)。

由於我使用的@SessionAttributes,user.firstName正與memberUserForm.getFirstName()彈簧重寫它調用createTeamMember我不打算這樣做之前....