2013-02-13 67 views
0

您能否向我解釋行爲?我正在servlet中設置一個請求屬性並在JSP中讀取它。JSP - 範圍屬性名稱與EL隱式對象相同

1)分派器servlet代碼:

request.setAttribute("someName", someObject); 

當然,我可以在JSP它讀作${someName}

2)但是,如果我設置的屬性名稱相同一些EL隱式對象的名稱,如

request.setAttribute("requestScope", someObject); 

然後我必須將它讀爲${requestScope.requestScope}

爲什麼容器能夠直接在案例#1中映射屬性,但如果屬性名稱本身是EL隱式對象名稱,我們需要嵌套引用,如${requestScope.requestScope}

回答

1

EL將首先檢查給定的變量名是否是保留(隱式)變量名之一,然後按照規範使用它。如果不是,就像${someName}那樣,那麼EL將自動在頁面,請求,會話和應用程序範圍中搜索具有該名稱的屬性。

你似乎認爲這是相反的,即首先是屬性,然後是隱式對象。這不是真的。否則它會完全破壞隱式EL對象的工作。