【正文】
and its successor Struts2 ? Tapestry ? Spring Web Flow ? Apache Click ? NReco (.NET integration framework for lightweight MDD) ? op4j (op4jognl extension) Java fluent interface implementation. ? MyBatis SQL mapper framework ? The Thymeleaf Template Engine A Java XML/XHTML/HTML5 template engine ? Unitils Modular Testing framework for Java All Rights Reser ved 169。 AlcatelLucent 2020 10 History OGNL最開(kāi)始作為 MVC架構(gòu)中 UI組件和 Controllers之間的一種關(guān)聯(lián)方法 ,利用屬性名字進(jìn)行關(guān)聯(lián)。隨著對(duì)更復(fù)雜關(guān)聯(lián)的需求的日益增加, Drew Davidson創(chuàng)建了一個(gè)他稱為KVCL的東西,用于 KeyValue Coding Language,這是 Luke Blanshard鼓動(dòng)的。Luke然后用 ANTLR重新實(shí)現(xiàn)了該語(yǔ)言 ,取了個(gè)新名字,這次由 Drew鼓動(dòng)的,這就是現(xiàn)在這種狀態(tài)。 后來(lái) Luke又用 JavaCC重新實(shí)現(xiàn)了該語(yǔ)言 。所有代碼的進(jìn)一步維護(hù)都由 Drew完成 (Luke進(jìn)行 spiritual指導(dǎo) )。 All Rights Reser ved 169。 AlcatelLucent 2020 11 Syntax ?簡(jiǎn)單的 OGNL表達(dá)式非常簡(jiǎn)單。該語(yǔ)言帶有各種 features,變得非常豐富,但是,通常情況下,你不需要關(guān)心該語(yǔ)言的復(fù)雜部分: the simple cases have remained that way。比如說(shuō),要訪問(wèn)一個(gè)對(duì)象的 name屬性, OGNL表達(dá)式就是 name。要得到通過(guò) headline屬性返回的對(duì)象的 text屬性, OGNL表達(dá)式 就是。 ?OGNL表達(dá)式的基本單元是導(dǎo)航鏈 (navigation chain),通常就叫做鏈 “chain”。最簡(jiǎn)單的 chains包含下面幾部分: All Rights Reser ved 169。 AlcatelLucent 2020 12 舉例: ()[0].() ?This expression follows these steps to evaluate: ?extracts the name property of the initial, or root, object (which the user provides to OGNL through the OGNL context) ?calls the toCharArray() method on the resulting String ?extracts the first character (the one at index 0) from the resulting array ?gets the numericValue property from that character (the character is represented as a Character object, and the Character class has a method called getNumericValue()). ?calls toString() on the resulting Integer object. The final result of this expression is the String returned by the last toString() call. All Rights Reser ved 169。 AlcatelLucent 2020 13 Expressions ?EL表達(dá)式遵守的格式(語(yǔ)法) 下面先列舉一些簡(jiǎn)單的例子,以及一些重要的例子。 完整內(nèi)容請(qǐng)參見(jiàn) Language Guide (PDF)的第四章 ?簡(jiǎn)單的例子: : 獲取數(shù)組的長(zhǎng)度 array[0]: 讀取數(shù)組的第一個(gè)元素 = array[length] = array[len + gth] [“foo”] :從 map中獲取某 key對(duì)應(yīng)的值 All Ri