OGNL中重要的3個符號

2021-09-01 16:24:58 字數 1266 閱讀 5006

1.#符號

#符號的用途一般有三種。

(1)訪問非根物件屬性,例如#session.msg表示式,由於struts 2中值棧被視為根物件,所以訪問其他非根物件時,需要加#字首。實際上,#相當於actioncontext. getcontext();#session.msg表示式相當於actioncontext.getcontext().getsession(). getattribute("msg") 。

(2)    用於過濾和投影(projecting)集合,如persons.,persons..[0]。

(3)    用來構造map,例如示例中的#。

2.%符號

%符號的用途是在標誌的屬性為字串型別時,計算ognl表示式的值,這個類似js中的eval,很暴力。

3.$符號

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

(1) 在國際化資源檔案中,引用ognl表示式,例如國際化資源檔案中的**:reg.agerange=國際化資源資訊:年齡必須在$同$之間。

(2) 在struts 2框架的配置檔案中引用ognl表示式,例如:

10

100baction-test校驗:數字必須為$為$之間!

struts2中怎樣來應用ognl?

在struts2中,valuestack就是根物件,在struts2的任何流程中,valuestack中的最頂層物件一定是action物件。

有時候會用到%這種符號的使用:

原因是:struts2的標籤可以自動把其中的值當做ognl表示式來處理,其它的一些標籤如:,href中的值就不會將其中的字串當做ognl表示式來處理,他只會當做普通的字串來處理,如果我們想讓其當做ognl表示式來處理時,需要用%{},包裹起來。

struts2中的標籤中哪些會是自動當做ognl表示式來處理的呢?

可以有如下的方法來檢驗:在,可以在value上面用%{}包裹起來,如果值沒有變化,就證明是當做ognl來處理的。

總結:關於struts2標籤庫屬性值的%與#的關係:

如果標籤的屬性值是ognl表示式,那麼無需加上%{}

如果標籤的屬性值字串型別,那麼在字串中凡是出現的%{}都會解析成ognl表示式,解析完畢之後再與其他的字串進行拼接構造出最後的字串值。

我們可以在所有的屬性值上加%{},這樣如果該屬性值是ognl表示式,那麼標籤處理類就會將%{}忽略掉。(struts2中所有的標籤都可以處理ognl表示式,不行的就加%{}嘛)

Struts2 ognl中的 和 符號用法說明

和 符號在ognl表示式中經常出現,而這三種符號也是開發者不容易掌握和理解的部分。在這裡筆者簡單介紹它們的相應用途。1 符號的用途一般有三種。1 訪問非根物件屬性,例如示例中的 session.msg表示式,由於struts 2中值棧被視為根物件,所以訪問其他非根物件時,需要加 字首。實際上,相當於...

Struts2 ognl中的 和 符號用法說明

和 符號在ognl表示式中經常出現,而這三種符號也是開發者不容易掌握和理解的部分。在這裡筆者簡單介紹它們的相應用途。1 符號的用途一般有三種。1 訪問非根物件屬性,例如示例中的 session.msg表示式,由於struts 2中值棧被視為根物件,所以訪問其他非根物件時,需要加 字首。實際上,相當於...

Struts2 ognl中的 和 符號用法說明

和 符號在ognl表示式中經常出現,而這三種符號也是開發者不容易掌握和理解的部分。在這裡筆者簡單介紹它們的相應用途。1 符號的用途一般有三種。1 訪問非根物件屬性,例如示例中的 session.msg表示式,由於struts 2中值棧被視為根物件,所以訪問其他非根物件時,需要加 字首。實際上,相當於...