OGNL语言详解:Java对象属性导航

需积分: 50 17 下载量 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等,为开发者提供了便利的表达式语言来操作和绑定对象。