在struts中符號的使用比較靈活,尤其是「%」、「#」、「$」這三個符號的使用。由於$廣泛應用於el中,這裡重點寫%和#符號的用法。
1、「#」符號有三種用途:
(1)、訪問非根物件(struts中值棧為根物件),ognl在不新增任何符號的情況下,預設訪問的是valuestack中的值,也就是說是action中的屬性和方法;如ognl上下文和action上下文,#相當於actioncontext.getcontext();下表有幾個actioncontext中有用的屬性:
名稱 作用 例子
parameters 包含當前http請求引數的map #parameters.id[0]作用相當於request.getparameter("id")
request 包含當前httpservletrequest的屬性(attribute)的map #request.username相當於request.getattribute("username")
session 包含當前httpsession的屬性(attribute)的map #session.username相當於session.getattribute("username")
(2)、用於過濾和投影(projecting)集合,如: books.
books.
(3)、構造map,如: #
#這種方式常用在給radio或select、checkbox等標籤賦值上。如果要在頁面中取乙個map的值可以這樣寫:
2、「%」符號的用途是在標籤的屬性值被理解為字串型別時,告訴執行環境%{}裡的是ognl表示式。
讓被理解為字串的表示式,被真正當成ognl來執行。
舉例:
上面的**第2行會在頁面上輸出「value1」,而
第3行則會輸出"#mymap['key1']"這麼乙個字串。原因:在property標籤中,value之後的字串會自動被解析為ognl表示式,但是url標籤在被struts解析的時候預設當做字串對待,所以這裡輸出的是原字串。
如果將第3行改寫成這樣:
則輸出為「value1」。
由此說明struts2裡不同的標籤對ognl的表示式的理解是不一樣的。當有些標籤中的字串物件不被理解成表示式的時候就可以通過%{}來顯式指定它的屬性為ognl表達。
3、「$」有兩種用途
(1)、在國際化資源檔案中,引用ognl表示式。
(2)、在struts 2配置檔案中,引用ognl表示式:
listuser.action?msg=$
(注意:這裡的${}不是el表示式,而是ognl表示式,他只是在不同的地方定義的解析字元不一樣而已)
listuser.action?msg=$
el表示式:
1.基本格式:${}
$ 3.基本運算:.和 .用於取屬性用於取array,list,map,set
4.{}裡允許的運算:算術運算,關係運算,邏輯運算,empty/not empty空判斷 $
$ $$判斷user物件是否為空
5.el的11個隱含物件
pagecontext,param和paramvalues,header和headervalues,cookie,initparam和4種取值範圍物件
*pagecontext可獲取jsp的request,response,out,session,config,servletcontext等物件 $
header $
*cookie $
來自 <>
struts2中 與 與 區別
在struts中符號的使用比較靈活,尤其是 這三個符號的使用。由於 廣泛應用於el中,這裡重點寫 和 符號的用法。1 符號有三種用途 1 訪問非根物件 struts中值棧為根物件 ognl在不新增任何符號的情況下,預設訪問的是valuestack中的值,也就是說是action中的屬性和方法 如ogn...
struts2中 與 與 區別
1 符號有三種用途 1 訪問struts中值棧物件 ognl在不新增任何符號的情況下,預設訪問的是valuestack中的值,也就是說是action中的屬性和方法 如ognl上下文和action上下文,相當於actioncontext.getcontext 舉例 上面的 第2行會在頁面上輸出 val...
struts2中 , , 的區別
首先我們需要找到值棧是什麼?值棧的結構分為什麼?struts2裡面本身提供的一種儲存機制,類似於域物件,簡單的來說就是,值棧,可以進行存值與取值 值棧的結構分為兩種,一種是root,這種的執行結構是乙個list集合 另一種是context,這一種的執行結果是map集合 當有的時候我們需要從conte...