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

时间:2010-12-14 16:46:03

标签: jsp spring-mvc

我一直在阅读关于spring(3.0)的文档和教程,所以我学会了如何使用JSP名称和Map作为模型返回ModelAndView。我还了解到,在JSP中,如果要访问该映射的一个键,则执行${attributename},依此类推。那是JSP EL。现在我的问题:

  • 页面的哪个对象是EL访问?那是PageContext吗?我试图在PageContext.getAttribute中找到这些密钥,但它们不存在。
  • 无论对象是什么,模型中的东西都会自动进入吗?

随意添加资源以澄清我的想法

2 个答案:

答案 0 :(得分:6)

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

当你的Spring控制器返回一个模型时(例如在ModelAndView内),这个模型被Spring的AbstractView类分解并插入到请求上下文中(这是“魔法”部分),所以当您的JSP EL表达式引用模型中的项目时,可以使用它。

答案 1 :(得分:0)

它们通常存储在请求中。因此request.getAttributeNames()应该为您提供所有模型(但仅用于教育目的 - 否则使用EL访问模型)。也就是说,它也应该可以从pageContext(在请求范围内)访问。

是的,它会自动添加。