2010-12-14 42 views
6

我一直在閱讀關於spring(3.0)的文檔和教程,所以我已經學會了如何返回帶有JSP名稱和Map的ModelAndView作爲模型。我還了解到,在JSP中,如果您想訪問該地圖的一個鍵,則可以執行${attributename}等等。這是JSP EL。現在我的問題:傳遞給JSP的Spring模型去哪裏?

  • 頁面的哪個對象是EL訪問?那是PageContext?我試圖在PageContext.getAttribute中找到這些密鑰,但它們不在那裏。
  • 無論對象是什麼,模型中的事物都是自動的嗎?

隨意添加資源,以澄清自己的想法

回答

6

當你做這樣的事情${attributename},JSP EL將檢查各種來源找到它,包括頁面和請求上下文(按順序)。當您的Spring控制器返回一個模型(例如在ModelAndView內)時,該模型被Spring的AbstractView類分解並插入到請求上下文中(這是「魔術」部分),以便當您的JSP EL表達式引用從模型中的項目,它可用於使用。

0

它們通常存儲在請求中。所以request.getAttributeNames()應該給你所有的模型(但是隻用於教育目的 - 否則使用EL來訪問模型)。也就是說,它也應該可以從pageContext(在請求範圍內)訪問。

是的,它會自動添加。

+0

謝謝,當然我會用EL,但我想知道會發生什麼。 – gotch4 2010-12-14 16:58:43