OGNL语言详解:Java对象属性导航
需积分: 50 34 浏览量
更新于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等,为开发者提供了便利的表达式语言来操作和绑定对象。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2011-12-06 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
菜园子
- 粉丝: 57
- 资源: 11
最新资源
- Chrome ESLint扩展:实时运行ESLint于网页脚本
- 基于 Webhook 的 redux 预处理器实现教程
- 探索国际CMS内容管理系统v1.1的新功能与应用
- 在Heroku上快速部署Directus平台的指南
- Folks Who Code官网:打造安全友好的开源环境
- React测试专用:上下文提供者组件实现指南
- RabbitMQ利用eLevelDB后端实现高效消息索引
- JavaScript双向对象引用的极简实现教程
- Bazel 0.18.1版本发布,Windows平台构建工具优化
- electron-notification-desktop:电子应用桌面通知解决方案
- 天津理工操作系统实验报告:进程与存储器管理
- 掌握webpack动态热模块替换的实现技巧
- 恶意软件ep_kaput: Etherpad插件系统破坏者
- Java实现Opus音频解码器jopus库的应用与介绍
- QString库:C语言中的高效动态字符串处理
- 微信小程序图像识别与AI功能实现源码