Struts2 ognl中的#、%和$符號用法說明

#、%和$符號在OGNL表達式中經常出現,而這三種符號也是開發者不容易掌握和理解的部分。在這裏筆者簡單介紹它們的相應用途。

1.#符號的用途一般有三種。
   1)訪問非根對象屬性,例如示例中的#session.msg表達式,由於Struts 2中值棧被視爲根對象,所以訪問其他非根對象時,需要加#前綴。實際上,#相當於ActionContext. getContext();#session.msg表達式相當於ActionContext.getContext().getSession(). getAttribute(”msg”) 。

    2)用於過濾和投影(projecting)集合,如示例中的persons.{?#this.age>20}。

    3)用來構造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。

2.%符號
%符號的用途是在標誌的屬性爲字符串類型時,計算OGNL表達式的值。如下面的代碼所示:
構造Map
<s:set name=”foobar” value=”#{’foo1′:’bar1′, ‘foo2′:’bar2′}” />

<p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p>

<p>不使用%:<s:url value=”#foobar['foo1']” /></p>

<p>使用%:<s:url value=”%{#foobar['foo1']}” /></p>

 

3.$符號
$符號主要有兩個方面的用途。

   在國際化資源文件中,引用OGNL表達式,例如國際化資源文件中的代碼:reg.agerange=國際化資源信息:年齡必須在${min}同${max}之間。

    在Struts 2框架的配置文件中引用OGNL表達式,例如下面的代碼片斷所示:

<validators>

    <field name=”intb”>

            <field-validator type=”int”>

            <param name=”min”>10</param>

            <param name=”max”>100</param>

            <message>BAction-test校驗:數字必須爲${min}爲${max}之間!</message>

        </field-validator>

    </field>

</validators>

 

原文http://blog.sina.com.cn/s/blog_49008bad0100dhv7.html

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