ognl # % 的作用(井號,星號,百分號)

struts2 OGNL,struts2 表達式語言,Struts2 中OGNL表達式的用法,Struts2 #,表達式語言的好處,Struts2 $,struts2 井號,星號,百分號

表達式語言主要有以下幾大好處:

1. 避免(MyType) request.getAttribute()和myBean.getMyProperty()之類的語句,使頁面更簡潔;

2. 支持運算符(如+-*/),比普通的標誌具有更高的自由度和更強的功能;

3. 簡單明瞭地表達代碼邏輯,使用代碼更可讀與便於維護。

Struts2 中OGNL表達式的用法:

OGNL(Object-Graph Navigation Language),可以方便地操作對象屬性的開源表達式語言;

“#”主要有三種用途:

1. 訪問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屬性,直到找到爲止

2. 用於過濾和投影(projecting)集合,如books.{?#this.price<100};

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>

“$”有兩個主要的用途:

1. 用於在國際化資源文件中,引用OGNL表達式,例子請參考《在Struts 2.0中國際化(i18n)您的應用程序》

2. 在Struts 2配置文件中,引用OGNL表達式,如

<action name="AddPhoto" class="addPhoto">

<interceptor-ref name="fileUploadStack" />

<result type="redirect">ListPhotos.action?albumId=${albumId}</result>

</action>


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