Struts2的OGNL表達式中三個符號的用法

 
OGNL表達式中可以使用$、#、和%三個符號。
通常時候,%很少使用。

但#的用法非常廣泛,
1.直接在表達式中生成Map對象時就是用該符號。
2.訪問Stack Context中的值都需要使用。
3.在表達式中生成Map集合。

$的用法:
1.取出集合元素的最後一個元素。
2.直接訪問ValueStack根的屬性。
如下圖所示:


如果實在不懂,使用<s:debug/>看一下這個調試頁,然後決定用#或$吧。

Struts2還提供了一些命名對象,這些命名對象與根對象無關,它們只是存在於Stack Context中。所以,訪問這些對象時需要使用#前綴來指明。
1.parameters對象:用於訪問HTTP請求參數。例如#parameters['foo']或#parameters.foo,用於返回調用HttpServletRequest的getParameter("foo")方法的返回值。
2.request對象:用於訪問HttpServletRequest的屬性。例如# request ['foo']或# request.foo,用於返回調用HttpServletRequest的getAttribute("foo")方法的返回值。
3.session對象:用於訪問HttpSession的屬性。例如# session ['foo']或# session.foo,用於返回調用HttpSession的getAttribute("foo")方法的返回值。
4.application對象:用於訪問ServletContext的屬性。例如# application ['foo']或# application.foo,用於返回調用ervletContext的getAttribute("foo")方法的返回值。
5.attr對象:該對象將依次搜索如下對象:PageContext、HttpServletRequest、HttpSession、ServletContext中的屬性。
注意:當系統創建了Action實例後,該Action實例已經被保存到ValueStack中,故無需書寫#即可訪問Action屬性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章