基本的OGNL語(yǔ)法是十分簡(jiǎn)單的,當(dāng)然OGNL支持豐富的表達(dá)式,一般情況下,不用擔(dān)心OGNL的復(fù)雜性。例如有一個(gè)man對(duì)象,該對(duì)象有一個(gè)name屬性,那么使用OGNL來獲得該name屬性可以使用如下表達(dá)式:
man.name |
OGNL表達(dá)式的基礎(chǔ)單元稱為導(dǎo)航鏈,簡(jiǎn)稱為鏈。一個(gè)最簡(jiǎn)單的鏈由如下部分組成。
>
屬性名稱:如上述示例中的name。
>
方法調(diào)用:hashCode()返回當(dāng)前對(duì)象的hash code。
>
數(shù)組元素:listeners[0]返回當(dāng)前對(duì)象的監(jiān)聽器列表中的第一個(gè)元素。
★說明★
OGNL表達(dá)式基于OGNL上下文中的當(dāng)前對(duì)象,一個(gè)“鏈”將使用上一個(gè)“鏈”的處理結(jié)果,開發(fā)者可以任意擴(kuò)展該鏈的長(zhǎng)度,OGNL沒有限制。
例如,一個(gè)OGNL表達(dá)式如下:
name.toCharArray()[0].numericValue.toString() |
該表達(dá)式將按照如下步驟求值。
(1)獲得OGNL Context中初始對(duì)象或者是根對(duì)象(root對(duì)象)的name對(duì)象。
(2)調(diào)用toCharArray()方法,返回一個(gè)String類型對(duì)象。
(3)獲得該String對(duì)象的第一個(gè)字符。
(4)獲得該字符的numericValue屬性(該字符為一個(gè)Character對(duì)象,該對(duì)象有一個(gè)getNumericValue()方法,該方法返回一個(gè)Integer類型值)。
(5)將獲得的Integer對(duì)象轉(zhuǎn)換為一個(gè)String類型值(使用toString()方法)。