OGNL语言详解:Java对象属性导航
需积分: 50 14 浏览量
更新于2024-07-28
1
收藏 616KB PDF 举报
"ognl语言指南 - 翻译: 李颖 (liying.cn.2010@gmail.com) 2010年"
OGNL(Object-Graph Navigation Language)是一种强大的表达式语言,用于访问和操作Java对象的属性。它的主要目标是提供一种灵活的方式来导航复杂的对象图,并执行对这些对象的操作。OGNL的设计使得它在多种场景下都非常有用,如数据绑定、数据源语言以及在Web应用中连接UI元素与模型。
在OGNL中,表达式可以非常多样化,包括但不限于以下几个方面:
1. **常数**:可以使用标准的Java常量,如数字、字符串和布尔值。
2. **属性引用**:通过`.`符号访问对象的属性,例如`object.property`。
3. **索引**:对数组和列表进行索引操作,如`array[index]`或`list[index]`。对于JavaBean,还可以使用`bean[index]`来访问索引属性。
4. **JavaBean中的索引属性**(Indexed Properties):支持对具有索引属性(如数组或列表)的JavaBean进行操作。
5. **OGNL特有的对象索引属性**(Object Indexed Properties):允许对非标准索引对象进行操作。
6. **调用方法**:通过`object.method()`来调用对象的方法。
7. **变量引用**:直接使用变量名,如`varName`。
8. **带括号的表达式**:使用`()`包围表达式,可以控制运算的优先级。
9. **子表达式链**(Subexpressions):嵌套的表达式,如`a.b.c`。
10. **构造集合**:创建集合,如`{1, 2, 3}`构造列表,`[1, 2, 3]`构造数组,`{key1: value1, key2: value2}`构造映射表。
11. **映射表操作**:包括对Map的投影和查询。
12. **集合操作**:在集合中查找第一个或最后一个匹配项,以及调用构造方法和静态方法。
13. **读取静态域**(Static Fields):可以直接访问类的静态字段。
14. **表达式计算**:支持复杂的数学和逻辑运算。
15. **伪Lambda表达式**:尽管OGNL不直接支持Lambda表达式,但可以通过某些技巧实现类似功能。
16. **伪属性**:为集合提供临时属性,增强表达式能力。
17. **操作符**:OGNL有丰富的操作符集,用于各种算术、比较和逻辑运算。
18. **类型转换**:自动或手动将对象转换为布尔值、数值、整数或其他数据类型。
19. **赋值与取值**:使用`= `进行赋值操作,如`object.property = value`。
OGNL的强大之处在于其灵活性和表达能力,使得它能处理复杂的数据结构和动态行为。由于其与Java的紧密集成,它被广泛应用于框架和库中,如WebWork、Tapestry等,为开发者提供了便利的表达式语言来操作和绑定对象。
2009-02-16 上传
2010-12-15 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
菜园子
- 粉丝: 57
- 资源: 11
最新资源
- nashornexamples:Nashorn 应用程序和示例
- blog
- Qt使用鼠标钩子Hook(支持判断按下、弹起、滚轮方向)
- DIY制作——基于STM32F103RC的电子相册(原理图、PCB源文件、程序源码及制作)-电路方案
- phook - Pluggable run-time code injector-开源
- timeless
- 管理系统系列--医院信息管理系统.zip
- Uber:React Native,Typescrip和AWS Amplify上的Mobile&Web Uber App
- pf.github.io
- 【毕业设计(论文)】基于单片机STM32控制、Android显示的便携式数字示波器电路原理图、源代码和毕业论文-电路方案
- AgroShop
- project1:laravel前练习
- 1004DB
- launch-countdown-timer-css:这是我的前端向导解决方案-启动倒数计时器(挑战)
- 基于 Mini51 开发板应用实例(附高速ADC数字示波器、正弦信号发生器、等精度频率计等)-电路方案
- Symfony