文章出處

Ognl表達式struts標簽“%,#,$”

1、什么是Ognl?

OGNL(Object-Graphic Navigation Language),對象圖道行語言。是一種可以方便操作對象屬性的開源表達式語言。

2、特點?

a、支持對象的方法調用,形式,eg:objName.methodName();

b、支持靜態類的方法調用和值訪問,expression:@【類全名(包括包路徑)】@【方法名|值名】,eg:@tutorial.MyConstant@App_NAME;

c、支持賦值操作和表達式串聯,eg:price=100,discount=80,calculatePrice()//返回80???

d、訪問OGNL上下文(OGNL context)和ActionContext

e、操作集合對象

3、使用OGNL表達式

1)“#”符號有三種用途

a、訪問非根對象(struts中值棧為根對象),eg:OGNL上下文和Action上下文,#相當于ActionContext.getContext();下表有幾個ActionContext中有用的屬性:

名稱   作用域 

eg:

1-1)parameters :包含當前HTTP請求參數的Map

#parameters.id[0]=>作用相當于request.getParameter("id")

 

1-2)request:包含當前HttpServletRequest的屬性(attribute)的Map

#request.userName=>作用相當于request.getAttribute("userName");

 

1-3)session:包含當前HttpSession屬性(attribute)的Map

#session.userName=>session.getAttribute("userName");

 

1-4)application:包含當前應用的ServletContext的屬性(attribute)的Map

#application.userName=>application.getAttribute("userName");

notice:attr用于按request>session>application順序訪問其屬性(attribute),#attr.userName;構造Map:{'foo1':'bar1','foo2':'bar2'}

b、用于過濾和投影

eg:books.{?#this.price>35} 

c、用于構建Map集合

在頁面上取一個Map的值:

eg:<s:property value="#myMap['foo1']"/>

 

2)“%”符號的用途是在標簽的屬性被理解為字符串類型時,告訴執行環境%{}里的是OGNL表達式,很有點類似javascript里面的eval_r()功能,例如 :   

var oDiv = eval_r("document.all.div"+index)       var oDiv = eval_r("document.all.div"+index)  

當index變量為1時,語句就會被當作var oDiv = document.all.div1  var oDiv = document.all.div1來執行。%{}就是起這個作用。

eg:

<s:set name="myMap" value="#{'key1':'value1','key2':'value2'}"/>

<s:property value="#myMap['key1']"/>

<s:url value="#myMap['key1']">   //輸出:#myMap['key1']

<s:url value="%{#myMap['key1']}"//輸出:value1

notice:struts2里不同的標簽對于ognl表達式的理解是不一樣的

3)“$”符號有兩種用途

3-1)在國際化資源文件中,引用OGNL表達式

3-2)在struts2配置文件中,引用OGNL表達式

eg:

    1. <action name="saveUser" class="userAction" method="save">   
    2.   
    3. <result type="redirect">listUser.action?msg=${msg}</result>   
    4.   
    5. </action>   
    6.   
    7. <action name="saveUser" class="userAction" method="save">       
    8.   
    9. <result type="redirect">listUser.action?msg=${msg}</result>   
    10.   
    11. </action>  愿望:http://www.cnblogs.com/luoxing/archive/2012/02/20/2359603.html

文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()