package com.test.ognl;
import java.util.List;
import ognl.Ognl;
import ognl.OgnlContext;
public class TestOgnl {
public static void main(String []a) throws Exception {
// TestOgnl.testOgnl();
// testOgnlStatic();
testListOgnl();
}
public static void testOgnl() throws Exception {
OgnlContext content = new OgnlContext();
Person p = new Person();
p.setName("生");
content.put("personAlias", p);
String expression = "personAlias.name";
Object obj = Ognl.parseExpression(expression);
System.out.println(Ognl.getValue(obj, content).toString());
}
public static void testOgnlStatic() throws Exception{
Object obj = Ognl.parseExpression("@com.test.ognl.Person@getCity()");
System.out.println(Ognl.getValue(obj, null).toString());
Object expression = Ognl.parseExpression("@com.test.ognl.Person@country");
System.out.println(Ognl.getValue(expression, null).toString());
}
@SuppressWarnings("unchecked")
public static void testListOgnl() throws Exception{
String expression = "{1, 2, 3, 4}";
Object obj = Ognl.parseExpression(expression);
List<Integer> list = (List)Ognl.getValue(obj, null);
for(Integer i : list) {
System.out.println(i);
}
}
}
package com.test.ognl;
public class Person {
private String name;
public static String country ="china";
public Person(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static String getCity() {
return "tianjin";
}
}
分享到:
相关推荐
随着时间的发展,OGNL逐渐演变为处理复杂数据关系的语言,广泛应用于多个知名Web框架,如WebWork(Struts2的前身)和Tapestry。 OGNL的语法简洁而强大,其基本单位是“导航链”,它可以用来访问对象的属性、调用...
本篇文章将深入探讨OGNL表达式的源码,通过一个简单的例子帮助你理解其工作原理。 首先,我们了解OGNL表达式的构成。OGNL表达式可以包含对象引用、属性访问、方法调用、索引操作、集合操作等多种元素。例如,`user....
OGNL不仅支持简单的属性访问,还支持复杂数据结构如List和Map的操作。 - **使用OGNL操作List**: ```jsp ,'xiaoi','liming'}"/> <s:property value="n"/><br> ``` 上述代码展示了如何使用OGNL来遍历一个...
在Java世界中,OGNL使得动态访问和操作对象的属性变得简单。 `ognl-3.0.14.jar` 和 `ognl-3.0.21.jar` 是两个不同版本的OGNL库的JAR包。版本号的不同意味着它们包含了不同阶段的源代码和修复的错误。这两个版本之间...
OGNL 提供了对 Java 对象图的导航能力,使得你可以通过简单的字符串表达式来访问和修改对象的属性,甚至可以执行复杂的逻辑操作。 2. **源码结构分析** 源码包中的 `ognl` 文件夹包含了 OGNL 的所有核心组件,如...
2. **示例代码**:通过编写简单的Java应用程序或Web项目,结合OGNL表达式进行实战演练,能加深理解。 3. **在线工具**:一些在线的OGNL表达式测试工具可以帮助开发者快速验证表达式的正确性。 综上所述,这份"OGNL...
OGNL,全称为Object-Graph Navigation Language,是一种强大的、动态的、类型安全的表达式语言,允许程序开发者通过简单的字符串表达式来访问和操作复杂的对象图。它的主要功能包括访问对象的属性、调用方法、执行...
OGNL允许开发者通过简单的字符串表达式来获取或设置对象的属性,甚至调用方法、操作数组和集合等。例如,`user.name`可以用来获取名为`user`的对象的`name`属性值。 2. **EL简介** EL是Java EE规范的一部分,主要...
OGNL,全称Object-Graph Navigation Language,是一种强大的表达式语言,主要用于在Java应用中获取和设置对象属性。它的设计目标是提供一种简单且灵活的方式来导航和操作对象图,即可以方便地访问和修改对象的属性,...
这使得在代码中动态调用对象的方法变得非常简单。例如,如果有一个名为`user`的对象,你可以直接调用`user.getName()`来获取用户的姓名。 其次,OGNL允许对类的静态方法进行调用和访问静态值。你可以使用`@[类全名]...
OGNL,全称为对象图导航语言,是一种强大的表达式语言,广泛应用于Java应用中,特别是Spring框架中的数据绑定和视图层表达式。它允许开发者以简洁的方式访问和操作对象的属性,支持动态计算和方法调用,是Java世界中...
假设我们在开发一个简单的Web应用,其中包含一个名为`Struts2_OGNL`的项目。 1. **配置开发环境**:首先,需要配置项目的编码方式为`utf-8`,并在`web.xml`文件中配置`ActionContextCleanUp`过滤器,以确保每次请求...
1. **对象导航**:OGNL允许开发者通过简单的字符串表达式来访问对象图中的任何部分。例如,`user.name`可以用来获取`user`对象的`name`属性。 2. **动态方法调用**:除了属性访问,OGNL还支持动态方法调用,例如`...
1. **对象导航**:ognl允许用户通过简单的字符串表达式来访问复杂的对象结构,例如`user.name`或`list[0].property`,使得在运行时动态地操作对象变得简单。 2. **方法调用**:ognl支持对对象的方法进行调用,如`...
通过上述内容,我们可以看到OGNL不仅是一个简单的属性获取和设置工具,更是一种强大的表达式语言,能够满足复杂的应用需求。无论是对于初学者还是有经验的开发者来说,掌握OGNL都将是一项非常有用的技能。
ognl (Object-Graph Navigation Language) 是一个强大的表达式语言,主要用于在Java应用程序中获取和设置对象属性。它允许开发者通过简单的字符串表达式动态地访问和操作对象。在Java世界中,ognl广泛应用于Spring ...
**表达式语言(EL)与OGNL概述** 表达式语言(EL)是用于在Java应用程序中简洁地访问和操作对象属性...值堆栈`OgnlValueStack`作为OGNL的主要应用场景,进一步增强了表达式的实用性和效率,使得数据的传递和处理更加流畅。
OGNL 的设计目标是提供一种简单而强大的方式来操作 Java 对象图。 #### 二、OGNL语法基础 OGNL 表达式的语法非常直观且易于学习。下面是一些基本概念: - **属性访问**:`object.property`,用于获取对象的属性值...
在Java编程中,OGNL提供了一种简洁的方式来表达复杂的对象导航路径,它允许我们通过简单的字符串表达式来访问对象图中的任何位置。例如,如果有一个用户对象,其包含一个名为`address`的属性,该属性又有一个`city`...