OGNL全称Object-Graph Navigation Language,是一种用于读取和设置java对象属性的描述语言。WebOGNL是一种构建以servlet为基础的组件化应用的web表现层框架,它的模板语言建立在OGNL表达式的基础上,具有别的web层框架不能匹敌的适应性。
OGNL可以让我们用非常简单的表达式访问对象层,例如,当前环境的根对象为user1,则表达式person.address[0].province
可以访问到user1的person属性的第一个address的province属性。
这种功能是模板语言的一个重要补充,象jsp2.0,velocity,jelly等等,都有类似的功能,但是ognl比它们完善得多,而且以一个独立的lib出现,方便我们构建自己的框架。
webwork2中使用OGNL取代原来的EL来做界面数据绑定,所谓界面数据绑定,也就是把界面元素(例如一个textfield,hidden)和对象层某个类的某个属性绑定在一起,修改和显示自动同步。
和struts的formbean相比,这样做的好处非常明显:在webwork中不需要为每个页面专门写formbean,可以直接利用对象层的对象。例如在对象设计中,我们的User和Person是分开的,而一个注册用户界面需要填写两者的内容,在webwork中,就可以保持后台的对象结构,把属于用户属性的界面元素用user.person.xxx绑定,把属于账号属性的界面元素用user.xxx绑定。