欢迎来到天天文库
浏览记录
ID:40711354
大小:36.50 KB
页数:7页
时间:2019-08-06
《ONGL入门介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、ONGL简介(2009-08-1021:40:56)转载标签:onglstrutsjava学习杂谈分类:学习OGNL的全称是ObjectGraphNavigationLanguage(对象图导航语言),它是一种强大的表达式语言,让你通过简单一致的表达式语法来读取和设置Java对象的属性值,调用对象的方法,遍历整个对象的结构图,实现字段类型转换等功能。为什么使用OGNL 相对于其它的表达式语言,OGNL的功能更为强大,它提供了很多高级而必需的特性,例如强大的类型转换功能、静态或实例方法的执行、跨集合投影,以及动态lamb
2、da表达式定义等。OGNL基础 OGNL表达式的计算都是围绕OGNL上下文来进行的,OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类(实现了java.util.Map接口)来表示。OGNL上下文可以包含一个或多个JavaBean对象,在这些对象中有一个是特殊的,这个对象就是上下文的根(root)对象。如果在写表达式的时候,没有指定使用上下文中的哪一个对象,那么根对象将被假定为表达式所依据的对象。在OGNL上下文中,只能有一个根对象,如果你访问根对象,那么在写表达式的时候,直接写对象的属性就可
3、以了;否则,你需要使用“#key”前缀,例如表达式#namager.name。OGNL表达式 OGNL表达式的基础单元就是导航链,通常简称为链(chain)。最简单的链由下列部分组成: 1、属性名:如name和manager.name; 2、方法调用:如manager.hashCode(),返回manager对象的散列码; 3、数组索引:如emals[0],返回当前对象的邮件列表中的第一个邮件地址。 所有OGNL表达式的计算都是在当前对象的上下文中,一个链简单地使用链中先前链接的结果作为下一步计算的
4、当前对象。我们看如下所示的链: name.toCharArray()[0].numericValue.toString() 这个表达式按照下列的步骤进行计算: 1、获取根对象的name属性; 2、在String结果上调用toCharArray()方法; 3、从char数组中提取第一个字符; 4、从提取的字符对象上行到numericValue属性(这个字符被表示为Character对象,Character类有一个getNumericValue()方法); 5、在Integer对象结果上调用
5、toString()方法。 这个表达式最终结果是最后返回的toString()方法调用返回的字符串。常量 OGNL支持的所有常量类型: 1、字符串常量: 以单引号或双引号括起来的字符串。如”hello”,’hello’。 不过要注意的是,如果是单个字符的字符串常量,必须使用双引号。 2、字符常量: 以单引号括起来的字符。如’a'。 3、数值常量: 除了Java中的int、long、float和double外,OGNL还让你使用“b”或“B”后缀指定BigDecimal常量,
6、用“h”“H”后缀指定BigInteger常量。 4、布尔常量: true和false。 5、null常量。操作符 OGNL除了支持所有的Java操作符外,还支持以下几种: 1、逗号, 与C语言中的逗号操作符类似。 2、花括号{} 用于创建列表,元素之间用逗号分隔。 3、in和notin 用于判断一个值是否在集合中。访问JavaBean的属性 假如有一个employee对象作为OGNL上下文的根对象,那对于下面的表达式: 1、name 对应的java代
7、码是employee.getName(); 2、address.country 对应的java代码是employee.getAddress().getCountry();访问静态方法和静态字段 @class@method(args) //调用静态方法 @class@field //调用静态字段 其中class必须给出完整的类名(包括包名),如果省略class,那么默认使用的类是java.util.Math,如: @@min(5,3) @@max(5,3) @@PI索引访问
8、 OGNL支持多种索引方式的访问。 1、数组和列表索引 在OGNL中,数组和列表可以大致看成是一样的。 如:array[0]、list[0]。表达式:{’zhangsan’,'lisi’,'wangwu’}[1]等。 2、JavaBean的索引属性 要使用索引属性,需要提供两对sett
此文档下载收益归作者所有