我在我的Spring控制器中設置了請求GET請求處理程序的表單對象。第一次用戶進入頁面時,應創建一個新的表單對象並設置爲請求。如果用戶發送表單,則從請求填充表單對象,現在表單對象具有所有用戶givern屬性。然後表單被驗證,如果驗證正確,則表單被保存到數據庫。如果表單未經驗證,我想將表單對象保存到會話中,然後重定向到GET請求處理頁面。當請求被重定向到GET處理程序時,它應該檢查會話是否包含表單對象。Spring Framework 3和會話屬性
我已經想通了,有@SessionAttributes(「形式」)在Spring註解,但由於某些原因下不工作,因爲在第一次會話屬性的形式爲null,並且它提供了錯誤:
org.springframework.web.HttpSessionRequiredException: Session attribute 'form' required - not found in session
這裏是我的控制器:
@RequestMapping(value="form", method=RequestMethod.GET)
public ModelAndView viewForm(@ModelAttribute("form") Form form) {
ModelAndView mav = new ModelAndView("form");
if(form == null) form = new Form();
mav.addObject("form", form);
return mav;
}
@RequestMapping(value="form", method=RequestMethod.POST)
@Transactional(readOnly = true)
public ModelAndView saveForm(@ModelAttribute("form") Form form) {
FormUtils.populate(form, request);
if(form.validate())
{
formDao.save();
}
else
{
return viewForm(form);
}
return null;
}
它幫助我,但是,如果第一次被調用,它會拋出異常。 – digz6666 2011-03-18 04:04:28
@ digz6666,參見[#SPR-4452](https://jira.springsource.org/browse/SPR-4452) – 2011-09-07 12:20:17
如果spring實現一個允許訪問會話屬性的方法參數註釋將很有用(在同樣你可以訪問請求參數)。 (@SessionAttribute(「貓」)貓貓){' – 2012-04-10 18:35:15