OGNL是Object-Graph(圖) Navigation(導航) Language的縮寫,它是一種功能強大的表達式語言(Expression Language,簡稱為EL),通過它簡單一致的表達式語法,可以存取對象的任意屬性,調用對象的方法,遍歷整個對象的結構圖,實現字段類型轉化等功能。它使用相同的表達式去存取對象的屬性。
WebOGNL是一種構建以servlet為基礎的組件化應用的web表現層框架,它的模板語言建立在OGNL表達式的基礎上,具有別的web層框架不能匹敵的適應性。
OGNL可以讓我們用非常簡單的表達式訪問對象層,例如,當前環境的根對象為user1,則表達式person.address[0].province
可以訪問到user1的person屬性的第一個address的province屬性。
這種功能是模板語言的一個重要補充,象jsp2.0,velocity,jelly等等,都有類似的功能,但是ognl比它們完善得多,而且以一個獨立的lib出現,方便我們構建自己的框架。
webwork2和現在的Struts2.x中使用OGNL取代原來的EL來做界面數據綁定,所謂界面數據綁定,也就是把界面元素(例如一個textfield,hidden)和對象層某個類的某個屬性綁定在一起,修改和顯示自動同步。
和struts1.x的formbean相比,這樣做的好處非常明顯:在webwork中不需要為每個頁面專門寫formbean,可以直接利用對象層的對象。例如在對象設計中,我們的User和Person是分開的,而一個注冊用戶界面需要填寫兩者的內容,在webwork中,就可以保持后臺的對象結構,把屬于用戶屬性的界面元素用user.person.xxx綁定,把屬于賬號屬性的界面元素用user.xxx綁定。
WebOGNL是一種構建以servlet為基礎的組件化應用的web表現層框架,它的模板語言建立在OGNL表達式的基礎上,具有別的web層框架不能匹敵的適應性。
OGNL可以讓我們用非常簡單的表達式訪問對象層,例如,當前環境的根對象為user1,則表達式person.address[0].province
可以訪問到user1的person屬性的第一個address的province屬性。
這種功能是模板語言的一個重要補充,象jsp2.0,velocity,jelly等等,都有類似的功能,但是ognl比它們完善得多,而且以一個獨立的lib出現,方便我們構建自己的框架。
webwork2和現在的Struts2.x中使用OGNL取代原來的EL來做界面數據綁定,所謂界面數據綁定,也就是把界面元素(例如一個textfield,hidden)和對象層某個類的某個屬性綁定在一起,修改和顯示自動同步。
和struts1.x的formbean相比,這樣做的好處非常明顯:在webwork中不需要為每個頁面專門寫formbean,可以直接利用對象層的對象。例如在對象設計中,我們的User和Person是分開的,而一個注冊用戶界面需要填寫兩者的內容,在webwork中,就可以保持后臺的對象結構,把屬于用戶屬性的界面元素用user.person.xxx綁定,把屬于賬號屬性的界面元素用user.xxx綁定。