OGNL中的#、%和$符號(hào)
#、%和$符號(hào)在OGNL表達(dá)式中經(jīng)常出現(xiàn),而這三種符號(hào)也是開發(fā)者不容易掌握和理解的部分。在這里筆者簡(jiǎn)單介紹它們的相應(yīng)用途。
1.#符號(hào)
#符號(hào)的用途一般有三種。
>>>
訪問非根對(duì)象屬性,例如示例中的#session.msg表達(dá)式,由于Struts 2中值棧被視為根對(duì)象,所以訪問其他非根對(duì)象時(shí),需要加#前綴。實(shí)際上,#相當(dāng)于ActionContext. getContext();#session.msg表達(dá)式相當(dāng)于ActionContext.getContext().getSession(). getAttribute("msg")。
>>>
用于過濾和投影(projecting)集合,如示例中的persons.{?#this.age>20}。
>>>
用來構(gòu)造Map,例如示例中的#{'foo1':'bar1', 'foo2':'bar2'}。
2.%符號(hào)
%符號(hào)的用途是在標(biāo)志的屬性為字符串類型時(shí),計(jì)算OGNL表達(dá)式的值。如下面的代碼所示:
構(gòu)造MapThe value of key "foo1" is 不使用%: 使用%: |
運(yùn)行界面如圖8.4所示。

|
圖8.4 “%”的OGNL表達(dá)式用法 |
3.$符號(hào)
$符號(hào)主要有兩個(gè)方面的用途。
>>>
在國際化資源文件中,引用OGNL表達(dá)式,例如國際化資源文件中的代碼:reg.agerange=國際化資源信息:年齡必須在${min}同${max}之間。
>>>
在Struts 2框架的配置文件中引用OGNL表達(dá)式,例如下面的代碼片斷所示:
10
100
BAction-test校驗(yàn):數(shù)字必須為${min}為${max}之間!
|
posted on 2009-08-15 17:34
jadmin 閱讀(98)
評(píng)論(0) 編輯 收藏