Spring MVC中java在两个页面上保持状态
我有一个Spring MVC 3应用程序,其中有两个页面。单页用户选择一些数据,并将其发布到控制器和buildsup第2页。然后在第2页得到它的值之后,我想使用第一页的值来执行数据库操作
到目前为止我已经尝试过的事情:
我看了看ModelAttribute
首先是第一个控制员的职位:
@RequestMapping(value = "/firstPage")
public ModelAndView firstPageSubmit(String valuePage1, String valuePage2) {
return new ModelAndView("secondPage", "readonlySettings", new ReadonlySettings( valuePage1, valuePage2 );
}
我希望春天能保存好这个东西,然后再给我:
@RequestMapping(value = "/secondPage")
public ModelAndView secondPage(@ModelAttribute("readonlySettings") ReadonlySettings settings, String valuePage2) {
//Store stuff in the database
doa.save(settings.getValuePage1(), settings.getValuePage2(), valuePage2);
}
但是没有骰子。。所有的值都是空的
顺便说一句:我没有对jsp本身上的ReadonlySettings
对象做任何处理。所以没有隐藏字段或其他什么,因为我不喜欢这个解决方案。人们可以改变隐藏的领域,这是我真正希望避免的事情
有人知道怎么处理吗
# 1 楼答案
通过使用@SessionAttributes,您可以告诉Spring在服务器端保留与用户web会话相关联的对象
显然这是相当原始的。根据操作的上下文,当有人通过链接直接加载第二个页面,并且会话中没有对象时,可能需要添加处理。此外,如果有人从未完成第二步,则在清理会话之前,对象将一直挂在那里。(如果只有两条线,则可以接受。)如果您的实际用例比这复杂得多,那么您可能希望查看web flow之类的东西,而不是重新发明