2014-01-08 51 views
3

我搜索了很多,找不到答案。模型属性在哪里存储?

其中模型对象值存储在Spring

model.addAttributes("key","values")值存储(例如:会话,请求)何为的这个范围?

如何使用expression language(如${key})获得JSP中存储值的值?

EL如何工作来检索model中存储的值?

+0

[传递给JSP的Spring模型转到哪里?](http://stackoverflow.com/questions/4441729/where-does-the-spring-model-that-is-pass to-a-jsp-goes-to) – zeroflagL

回答

2

它在请求中,除非用@SessionAttributes修改。如果你正在做重定向 - 请求属性丢失;这是一个新的要求。
对于您的第二个和第三个问题是通过这个链接Where does the Spring Model that is passed to a JSP goes to?

+0

模型属性不会开始存储在请求中或会话中。 –

3

DispatcherServlet,这是任何Spring MVC应用程序的入口点,创建针对每个请求一个新ModelAndViewContainer对象解决。这个类的Javadoc指出

记录模型和控制器的方法被调用的过程中,通过 HandlerMethodArgumentResolversHandlerMethodReturnValueHandlers 做出视图相关的决定。

这两个接口是解决你的@RequestMapping带注释的方法参数和返回值的东西。

因此,在请求的生命周期中,模型属性存储在此对象的ModelMap字段中。实际的当前实现是BindingAwareModelMap

在请求结束时,当需要渲染视图时,一些View对象会将模型属性与HttpServletRequest属性合并。

EL如何检索模型中存储的值?

它没有。 EL解析来自JSP页面范围HttpServletRequest,HttpSessionServletContext的属性。