java integer ognl_OGNL语言指南.pdf

OGNL语言指南

OGNL 语言指南

目录

简介1

历史 2

语法 2

表达式 4

常量 4

引用属性 4

下标 4

数组和List 下标 5

JavaBean 小标属性 5

OGNL 对象索引属性 5

调用方法 5

变量引用 6

括号表达式 6

链式子表达式Chained Subexpressions 6

构造集合 7

List 7

原生数组 7

Map 7

集合投影 8

从集合中选择元素 8

选择第一个匹配元素 8

选择最后一个元素 8

调用构造函数 9

调用静态方法 9

获得静态成员 9

表达式求值 9

伪Lambda 表达式 10

集合的伪属性 10

与Java 不同的运算符 11

赋值和取值 11

第5章、 强制对象到类型的转换 12

把对象表示为Boolean 12

把对象表示为Number 12

把对象表示为Integer 12

把对象表示为Collection 12

附录A. OGNL 语言参考 14

运算符 14

第1章、简介

OGNL 表示Object Graph Navigation Language,对象图形导航语言。它是一种对Java 对象的

getter 和setter 属性的表示和绑定语言。通常,相同的表达式被用来获取和设置属性的值。

我们把 OGNL 当成一个单词来发音,有点像“orthogonal ”(垂直的)这个词drunken

pronunciation 的最后一个音节的发音。

很多人问OGNL 到底有什么用。事实上,OGNL 已经被用在了很多地方:

l GUI 元素(textfield 、combobox 等)到模型对象的绑定语言。通过OGNL 的类型转换机制,

从一种类型到另外一种类型的值转换会更容易(例如String 到数字类型)

l 把表的列映射到Swing 的TableModel 的数据源语言

l Web 组件和底层对象模型的绑定语言(WebOGN 、Tapestry、WebWork 、WebObjects )。

l 被Jakarata Commons BeanUtils 包或JSTL 的EL 表达式(它只允许简单的属性导航和初级

的索引属性)所使用的更具表达性的替代品

大多数能在Java 中做的事情在OGNL 都是可以的,而且还有很多没有的例如List 映射、选

择和lambda 表达式。

第2 章、历史

OGNL 的出发点就是联系起UI 组件和使用属性的控制器。随着更复杂的关联需求产生,Drew

Davidson 在Luke Blanshard 鼓动下创建了KVCL ,Key-Value Coding Language (键值编码语

言)。之后Luke 重新用ANTLR 实现了这个语言,然后又在Drew 的鼓动下起了新名字,使

其成为现在这个情况。稍后,再次使用JavaCC 重新实现,而进一步的代码维护则是由Drew

来完成的(Luke 则成为思想指导)。

第3 章、语法

原始的OGNL 表达式非常简单。现在这个语言功能丰富,然而无需为其复杂的部分发愁,简

单的部分还是一如既往。例如,要访问一个对象名为name 的属性,OGNL 表达式就是name 。

如果要得到由headline 属性中的text 属性,那么就是headline.text 。

什么是属性?简单的说,OGNL 定义的属性与Bean 的属性是一样的,可以是一对get 和set

方法,或者是一个成员(完整的故事有点复杂,属性随对象而变化,看下面解释的更多)。

OGNL 表达式的基本单元就是导航链,通常叫做chain,最简单的链包括如下部分:

表3.1 OGNL 表达数组件

表达式元素组件

例子

属性名字

像上面的name 和headline.text

方法调用

hashCode()返回的当前对象的hash 码

数组索引

listeners[0]返回当前听众列表中的第一个对象

所有的 OGNL 表达式都会在当前对象的上下文下求值,而链只是简单的为下一个对象使用

链中前一个链接的值作为当前对象。其实可以扩展链,例如:

name.toCharArray()[0].numericValue.t

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值