Struts 2 標(biāo)簽中 # % 的作用
“#”主要有三種用途:
- 訪問(wèn)OGNL上下文和Action上下文,#相當(dāng)于ActionContext.getContext();下表有幾個(gè)ActionContext中有用的屬性:
名稱 |
作用 |
例子 |
parameters |
包含當(dāng)前HTTP請(qǐng)求參數(shù)的Map |
#parameters.id[0]作用相當(dāng)于request.getParameter("id") |
request |
包含當(dāng)前HttpServletRequest的屬性(attribute)的Map |
#request.userName相當(dāng)于request.getAttribute("userName") |
session |
包含當(dāng)前HttpSession的屬性(attribute)的Map |
#session.userName相當(dāng)于session.getAttribute("userName") |
application |
包含當(dāng)前應(yīng)用的ServletContext的屬性(attribute)的Map |
#application.userName相當(dāng)于application.getAttribute("userName") |
attr |
用于按request > session > application順序訪問(wèn)其屬性(attribute) |
#attr.userName相當(dāng)于按順序在以上三個(gè)范圍(scope)內(nèi)讀取userName屬性,直到找到為止 |
#符號(hào)的用途一般有三種。 — 訪問(wèn)非根對(duì)象屬性,例如示例中的#session.msg表達(dá)式,由于Struts 2中值棧被視為根對(duì)象,所以訪問(wèn)其他非根對(duì)象時(shí),需要加#前綴。實(shí)際上,#相當(dāng)于ActionContext. getContext();#session.msg表達(dá)式相當(dāng)于ActionContext.getContext().getSession(). getAttribute("msg") 。
2.用于過(guò)濾和投影(projecting)集合,如books.{?#this.price<100};
投影就是選出集合中每個(gè)元素的相同屬性組成新的集合,類似于關(guān)系數(shù)據(jù)庫(kù)的字段操作。
投影操作
語(yǔ)法: collection.{XXX},
其中XXX 是這個(gè)集合中每個(gè)元素的公共屬性。
例如:group.userList.{username}將獲得某個(gè)group中的所有user的name的列表。
選擇就是過(guò)濾滿足selection 條件的集合元素,類似于關(guān)系數(shù)據(jù)庫(kù)的紀(jì)錄操作。
選擇操作
語(yǔ)法:collection.{X YYY},
其中X 是一個(gè)選擇操作符,YYY后面則是選擇用的邏輯表達(dá)式。
選擇操作符有三種:
? 選擇滿足條件的所有元素
^ 選擇滿足條件的第一個(gè)元素
$ 選擇滿足條件的最后一個(gè)元素
例如:group.userList.{? #this.name != null}將獲得某個(gè)group中user的name不為空的user的列表
3.構(gòu)造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
“%”符號(hào)的用途是在標(biāo)志的屬性為字符串類型時(shí),計(jì)算OGNL表達(dá)式的值。
例如在Ognl.jsp中加入以下代碼:
<hr />
<h3>%的用途</h3>
<p><s:url value="#foobar['foo1']" /></p>
<p><s:url value="%{#foobar['foo1']}" /></p>
|
posted on 2009-10-09 10:18
super_nini 閱讀(634)
評(píng)論(0) 編輯 收藏