【问题标题】:Where do model attributes get stored?模型属性存储在哪里?
【发布时间】:2014-01-26 19:16:05
【问题描述】:
我搜索了很多,但找不到答案。
模型对象值存储在Spring 中的位置。
model.addAttributes("key","values") 值的存储位置(例如:会话、请求)。this 的范围是什么?
如何使用 expression language (如 ${key})获取 JSP 中存储值的值?
EL 如何检索model 中存储的值?
【问题讨论】:
标签:
java
spring
jsp
spring-mvc
servlets
【解决方案1】:
DispatcherServlet 是任何 Spring MVC 应用程序的入口点,它会在每个请求上创建一个新的 ModelAndViewContainer 对象。此类的 javadoc 声明
记录模型和视图相关的决策
HandlerMethodArgumentResolvers 和 HandlerMethodReturnValueHandlers
在调用控制器方法的过程中。
这两个接口负责解析您的 @RequestMapping 带注释的方法参数和返回值。
因此,在请求的生命周期中,模型属性存储在此 ModelAndViewContainer 对象的 ModelMap 字段中。实际的当前实现是BindingAwareModelMap。
在请求结束时,当需要渲染视图时,一些View 对象会将模型属性与HttpServletRequest 属性合并。
EL 如何检索模型中存储的值?
它没有。 EL 从 JSP 的页面范围内解析属性,HttpServletRequest、HttpSession 或 ServletContext。