struts2的OGNL表達式

   1、 sturts2OGNL表達式,即 Object Graph Navigation Language,對象圖形化導航語言。是一門方便操做對象屬性的表達式語言。具備如下特色:session

    一、支持對象方法調用和值的訪問。如user.getUsername(),#user.name
app

    二、支持賦值和計算操做。如 price = 100,num = 2,則caculatePrice()值爲200
url

    三、支持訪問OGNL上下文(OGNL context)和ActionContext
spa

    四、支持對集合對象的操做
翻譯

  2、OGNL表達式的使用對象

    OGNL常和Struts2標籤結合使用,很是靈活,能夠用 "%"、"#"、"$"來操做。資源

    一、#的使用方式,#至關於ActionContext.getContext();字符串

    #request.username 至關於 request.getAttribute("username");   
get

    #session.username 至關於 session.getAttribute("username");
io

    #application.username至關於 application.getAttribute("username");

    #還能夠用於構造map:如#{"1","a","2","b","3","c"}

    二、%{}的做用是當標籤的屬性值被當作字符串類型,告訴執行環境%{}中的是OGNL表達式,如:

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

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

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

    上面的代碼第2行會在頁面上輸出「value1」,而第3行則會輸出"#myMap['key1']"這麼一個字符串。 若是將第3行改寫成這樣:   

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

就能輸出正確的結果「value1」。

這種狀況說明,struts2不一樣的標籤對OGNL表達式的理解不同,若是有不能識別的如#myMap['key1']這樣的語句時,用%{}把這語句包含進去,翻譯一下就能夠了。

    三、$有兩種用途

    (1)、在國際化資源中引用OGNL表達式。

    (2)、在struts2配置文件中引用OGNL表達式

    <action name="saveUser" class="userAction" method="save">  

        <result type="redirect">listUser.action?msg=${msg}</result>  

    </action>  

相關文章
相關標籤/搜索