对英文版使用手册的翻译,很全. 翻译: 李颖 (liying.cn.2010@gmail.com) 2010年 1. 简介 2. 历史 3. 语法 4. 表达式 常数 属性引用 索引 数组(Array)与列表(List)的索引 JavaBean中的索引属性(Indexed Properties OGNL特有的对象索引属性(Object Indexed P 调用方法 变量引用 带括号的表达式 子表达式(Subexpressions)链 构造集合(Collection) 列表(Lists) 数组 映射表(Maps) 对集合的投影(Project) 在集合中查询 查找第一个匹配项 查找最后一个匹配项 调用构造方法 调用静态方法 ..... ### OGNL语言指南知识点详解 #### 一、简介 OGNL(Object Graph Navigation Language)是一种专门用于访问和操作Java对象图的表达式语言。它主要用于读取对象属性的值,也可以用来设置这些值。OGNL的设计目的是为了方便地与各种用户界面组件进行交互,并且能够简化对象属性值的获取过程。 #### 二、历史 OGNL最初由Drew Davidson开发,目的是为了在用户界面元素与控制器之间建立基于属性名称的关联。随着需求的增长,Luke Blanshard对其进行了扩展和完善,增加了更多的功能,并最终形成了我们现在所看到的OGNL语言。该语言经历了多次重构和发展,包括使用ANTLR和JavaCC等工具进行实现,最终形成了稳定且功能强大的版本。 #### 三、语法 OGNL的语法设计简洁明了,易于理解和使用。下面是一些关键的概念: - **属性引用**:OGNL使用点号(`.`)来表示属性的引用,例如`person.name`表示访问`person`对象的`name`属性。 - **方法调用**:可以通过在属性后跟括号和参数来调用方法,如`person.hashCode()`表示调用`person`对象的`hashCode`方法。 - **索引**:对于数组或列表等集合类型,可以使用方括号(`[]`)来指定索引,例如`list[0]`表示访问列表`list`的第一个元素。 - **链式调用**:OGNL支持链式调用,即在一个表达式中连续调用多个属性或方法,如`person.address.street`表示访问`person`对象的`address`属性的`street`属性。 #### 四、表达式 OGNL支持多种类型的表达式,这些表达式可以组合使用,以满足复杂的业务逻辑需求: - **常量**:可以是数字、字符串或布尔值。 - **属性引用**:如前所述,使用点号来表示属性的引用。 - **索引**:用于访问数组或列表等集合类型的特定元素。 - **调用方法**:可以直接调用对象的方法,支持传递参数。 - **变量引用**:通过定义变量并在表达式中引用它们。 - **带括号的表达式**:使用括号来改变运算顺序或分组表达式。 - **构造集合**:可以创建新的集合,如列表、数组或映射。 - **投影**:可以在集合上执行投影操作,提取每个元素的某个属性。 - **查询**:在集合中执行查询操作,例如查找第一个或最后一个匹配项。 - **调用构造方法和静态方法**:可以使用OGNL来调用类的构造方法和静态方法。 #### 五、对象到数据类型的强制转换 OGNL提供了强大的类型转换机制,可以自动将对象转换为不同的数据类型,如布尔值、数值、整数或集合等。这种灵活性使得OGNL非常适合处理不同类型的数据源。 #### 六、操作符 OGNL支持一系列的操作符,包括但不限于算术操作符、比较操作符、逻辑操作符等。这些操作符可以用来构建复杂的表达式。 #### 七、伪Lambda表达式 OGNL还支持一种名为“伪Lambda表达式”的特性,允许用户定义函数式的表达式,从而支持更高阶的编程概念。 #### 八、附录A:OGNL语言参考 本章节详细介绍了OGNL的各种操作符、关键字和其他语法元素,为用户提供了一个全面的语言参考。 ### 结论 OGNL作为一种强大的表达式语言,在多种应用场景中都能发挥重要作用。无论是作为GUI元素与模型对象之间的绑定语言,还是作为数据源语言或高级属性访问语言,OGNL都能够提供简单且灵活的解决方案。通过对OGNL的学习和掌握,开发者可以更高效地处理Java对象及其属性,从而提高开发效率和软件质量。
剩余21页未读,继续阅读
- 粉丝: 57
- 资源: 11
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- G309菜篮三维最终_3.x_t..bin
- 基于xilinx k7 325t实现的千兆网udp协议,只需要设置好IP,端口,就可以直接给数据,基本等同于透传,可以不用管底层协议 可以 # FPGA 实现udp模块说明 ## udp-proto
- Keil C51 插件 检测变量名引用不统一
- jsp代码技术的实现与结果
- 基于 PyTorch 实现的生成对抗网络(GAN)代码,用于特定的图像生成任务(斑马和马的图像转换相关任务)
- 一个基于递归下降解析算法的C++程序
- mysql和sqlserver语法有什么区别.txt
- linux常用命令大全.txt
- linux常用命令大全.txt
- linux常用命令大全.txt