EL運算式為什麼可以在值棧中取值_EL運算式

來源:互聯網
上載者:User
我在後台將一個對象的list集合放到了值棧的Map棧中
Java code ? 1 2 3 4 public  String getLastVersionPD(){ ActionContext.getContext().put( "pdList" ,  this .pdManager.getLastVersonPD()); return  "listAction" ; }
然後在前台用OGNL運算式迭代
XML/HTML code ? 1 2 3 4 5 6 < s:iterator  value = "#pdList" >    < s:property  value = "name" />    < s:property  value = "version" />    < s:a  action = "pdManagerAction_delete?key=%{key}" >刪除</ s:a >    < a  href = "javascript: showProcessImage('${requestScope.deploymentId}')" >查看流程圖</ a > </ s:iterator >

name version key deploymentId都是一個對象的屬性,迭代時是放在值棧的對象棧的頂部的,前邊的name version key使用OGNL運算式能在值棧的對象棧取到值,為什麼使用EL運算式也可以在request範圍取得deploymentId屬性呢



樓主這個問題,為什麼用el取request範圍的東西會同樣取到值棧的內容呢.這個問題就要結合struts2的源碼來說了,我們知道request在javaee裡面是HttpServletRequest它是一個介面裡面的一切封裝都是通過javax.servlet.http.HttpServletRequestWrapper類來實現的.struts2有自己的javax.servlet.http.HttpServletRequestWrapper實現,也就是在struts2-core包下的org.apache.struts2.dispatcher.StrutsRequestWrapper重新對getAttribute方法進行了重寫.
我們知道el運算式取request範圍的值就是調用request.getAttribute(String s);
一下這段是struts2的org.apache.struts2.dispatcher.StrutsRequestWrapper對getAttribute方法重寫的源碼部分
Java code ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.