设为首页 加入收藏

TOP

介绍一下OGNL语言
2014-11-23 19:07:12 来源: 作者: 【 】 浏览:10
Tags:介绍 OGNL 语言

OGNL(Object Graph Navigation Language)是一种表达式语言。使用这种表达式语言,可以通过某种表达式语法来存取Java对象树中的任意属性、调用Java对象树的方法、同 时能够自动实现必要的类型转化。


OGNL支持各种复杂的表达式。但最基本的表达式的原型,是将对象的引用值用点串联起来,从左到右,每一次表达式计算返回的结果成为当前对象,后面部分接着在当前对象上进行计算,一直到全部表达式计算完成,返回最后得到的对象。OGNL则针对这条基本原则进行不断的扩充,从而使之支持对象树、数组、容器的访问,甚至是类似SQL中的投影选择等操作。


一些常用的OGNL表达式:


1. 基本对象树的访问


对象树的访问就是通过使用点号将对象的引用串联起来进行。


例如:name,department.name,user.department.factory.manager.name


2. 对容器变量的访问


通过#符号加上表达式进行容器变量的访问。


例如:#name,#department.name,#user.department.factory.manager.name


3. 使用操作运算符


OGNL表达式中能使用的操作符基本跟Java里的操作符一样,除了能使用 +, -, *, /, ++, –, ==, !=, = 等操作符之外,还能使用 mod, in, not in等。


4. 容器、数组、对象


OGNL支持对数组和ArrayList等容器的顺序访问:


例如:group.users[0]


同时,OGNL支持对Map的按键值查找:


例如:#session['mySessionPropKey']


OGNL还支持容器的构造的表达式:


如:{“green”, “red”, “blue”}构造一个List,#{“key1″ : “value1″, “key2″ : “value2″, “key3″ : “value3″}构造一个Map


也可以通过任意类对象的构造函数进行对象新建:


如:new java.net.URL(“http://localhost/”)


5. 对静态方法或变量的访问


要引用类的静态方法和字段,他们的表达方式是一样的@class@member或者@class@method(args):


例如:@com.javaeye.core.Resource@ENABLE,@com.javaeye.core.Resource@getAllResources


6. 方法调用


直接通过类似Java的方法调用方式进行,你甚至可以传递参数:


例如:user.getName(),group.users.size(),group.containsUser(#requestUser)


7. 投影和选择


OGNL支持类似数据库中的投影(projection) 和选择(selection)。


投影就是选出集合中每个元素的相同属性组成新的集合,类似于关系数据库的字段操作。投影操作语法为 collection.{XXX},其中XXX 是这个集合中每个元素的公共属性。


例如:group.userList.{username}将获得某个group中的所有user的name的列表。


选择就是过滤满足selection 条件的集合元素,类似于关系数据库的纪录操作。选择操作的语法为:collection.{X YYY},其中X 是一个选择操作符,后面则是选择用的逻辑表达式。而选择操作符有三种:
选择满足条件的所有元素
^ 选择满足条件的第一个元素
$ 选择满足条件的最后一个元素


例如:group.userList.{ #this.name != null}将获得某个group中user的name不为空的user的列表。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇面试进屋—与面试官的第一个照面 下一篇EJB的角色和三个对象

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: