我正在尝试在Spring mvc应用程序中的两个控制器之间共享数据。
在控制器A中,我用@SessionAttributes({"mymodel1"})注释了类,并在接收第一个GET请求的方法中将其添加到ModelMap中:
model.addAttribute("mymodel1", MyModel1);我现在想从控制器B读取myModel1。在这个控制器中,我有以下方法来截取POST请求,并且在其参数中已经有了一个不同的模型:
public String processSubmit(@ModelAttribute("mymodel2") MyModel2 mymodel2, BindingResult result, SessionStatus status, HttpServletRequest httpRequest)到目前为止,一切工作正常,我可以从processSubmit读取mymodel2。但是,如果我现在想要向此方法签名添加另一个@ModelAttribute(" MyModel1 ") mymodel1 mymodel1,我应该能够读取我在控制器A中设置的值,但是我得到的异常是第一个模型不再被识别。
所以我的问题是:我如何从控制器B读取mymodel2?
发布于 2012-02-04 02:42:00
上面的javadoc摘录是使用@SessionAttributes的最典型的方式。然而,Joly所描述的也应该是可行的。会话属性通过DefaultSessionAttributeStore存储,默认情况下,它在将属性名称存储在会话中时不会为属性名称添加前缀。这意味着如果ControllerA和ControllerB都列出了一个名为"mymodel1“的属性,那么它们实际上引用的是同一个会话属性。你需要提供更多关于你得到的错误和实际的控制器代码的信息。
https://stackoverflow.com/questions/9119047
复制相似问题