传递给JSP的Spring模型去了哪里?
问题内容:
我一直在阅读有关spring(3.0)的文档和教程,因此,我学习了如何以ModelAndView
JSP名称和Map作为模型返回a
。我还了解到,在JSP中,如果您想访问该映射的一个键,则可以这样做${attributename}
,依此类推。那就是JSP EL。现在我的问题是:
- EL正在访问页面的哪个对象?是
PageContext
吗 我试图在其中找到这些键,PageContext.getAttribute
但它们不在那里。 - 无论对象是什么,模型中的内容都自动到达那里吗?
随意添加资源以阐明我的想法
问题答案:
当您执行类似的操作时${attributename}
,JSP EL将检查各种资源以找到它,包括页面和请求上下文(按此顺序)。
当您的Spring控制器返回模型时(例如ModelAndView
),该模型由Spring的AbstractView
类分解并插入到请求上下文中(这是“魔术”部分),以便当您的JSP
EL表达式引用该模型中的项时,可以使用。