传递给JSP的Spring模型去了哪里?


问题内容

我一直在阅读有关spring(3.0)的文档和教程,因此,我学习了如何以ModelAndViewJSP名称和Map作为模型返回a
。我还了解到,在JSP中,如果您想访问该映射的一个键,则可以这样做${attributename},依此类推。那就是JSP EL。现在我的问题是:

  • EL正在访问页面的哪个对象?是PageContext吗 我试图在其中找到这些键,PageContext.getAttribute但它们不在那里。
  • 无论对象是什么,模型中的内容都自动到达那里吗?

随意添加资源以阐明我的想法


问题答案:

当您执行类似的操作时${attributename},JSP EL将检查各种资源以找到它,包括页面和请求上下文(按此顺序)。

当您的Spring控制器返回模型时(例如ModelAndView),该模型由Spring的AbstractView类分解并插入到请求上下文中(这是“魔术”部分),以便当您的JSP
EL表达式引用该模型中的项时,可以使用。