Struts 2 標簽中 # % 的作用
“#”主要有三種用途:
- 訪問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") |
application |
包含當前應用的ServletContext的屬性(attribute)的Map |
#application.userName相當于application.getAttribute("userName") |
attr |
用于按request > session > application順序訪問其屬性(attribute) |
#attr.userName相當于按順序在以上三個范圍(scope)內讀取userName屬性,直到找到為止 |
#符號的用途一般有三種。 — 訪問非根對象屬性,例如示例中的#session.msg表達式,由于Struts 2中值棧被視為根對象,所以訪問其他非根對象時,需要加#前綴。實際上,#相當于ActionContext. getContext();#session.msg表達式相當于ActionContext.getContext().getSession(). getAttribute("msg") 。
2.用于過濾和投影(projecting)集合,如books.{?#this.price<100};
投影就是選出集合中每個元素的相同屬性組成新的集合,類似于關系數據庫的字段操作。
投影操作
語法: collection.{XXX},
其中XXX 是這個集合中每個元素的公共屬性。
例如:group.userList.{username}將獲得某個group中的所有user的name的列表。
選擇就是過濾滿足selection 條件的集合元素,類似于關系數據庫的紀錄操作。
選擇操作
語法:collection.{X YYY},
其中X 是一個選擇操作符,YYY后面則是選擇用的邏輯表達式。
選擇操作符有三種:
? 選擇滿足條件的所有元素
^ 選擇滿足條件的第一個元素
$ 選擇滿足條件的最后一個元素
例如:group.userList.{? #this.name != null}將獲得某個group中user的name不為空的user的列表
3.構造Map,如#{'foo1':'bar1', 'foo2':'bar2'}。
“%”符號的用途是在標志的屬性為字符串類型時,計算OGNL表達式的值。
例如在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)
評論(0) 編輯 收藏