下面几个javaBean的getXXX()和setXXX()方法省略
Address.java
public class Address
{
private String homeAddress;
private String companyAddress;
.........
}
Pet.java
package dong.application.ognl;
public class Pet
{
private String name;
private String color;...................
}
Person.java
package dong.application.ognl;
import java.util.List;
public class Person
{
private String name;
private int age;
private String[] friends;
private List<Pet> pets;
private Address address;
.....
}
MyObject.java
package dong.application.ognl;
public class MyObject
{
private String name;
private int age;
....
}
OGNLTest
package dong.application.ognl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import ognl.Ognl;
import ognl.OgnlContext;
public class OgnlTest
{
static final public int a = 9;
public static void main(String[] args) throws Exception
{
OgnlContext context = new OgnlContext();
Pet p1 = new Pet("cat", "white");
Pet p2 = new Pet("dog", "black");
List<Pet> pets = new ArrayList<Pet>();
pets.add(p1);
pets.add(p2);
String[] friends = new String[]
{ "huiping", "xiaole", "linfang" };
Address address = new Address("jiyuan", "xuchang");
Person person = new Person("dongdong", 22, friends, pets, address);
context.put("person", person);
MyObject myo = new MyObject("xiaojing", 21);
context.put("wife", myo);
context.setRoot(myo);
Object o1 = Ognl.parseExpression("name");
Object o2 = Ognl.getValue(o1, context, context.getRoot());
System.out.println(o1 + "\t" + o2);
System.out.println("================我是分割线================");
Object o3 = Ognl.parseExpression("friends[0]");
// 注意此处填写根元素的时候,最好要动态获取,如果手动指定,则会以指定的为主
Object o4 = Ognl.getValue(o3, context, person);
// Object o4 = Ognl.getValue(o3, context, context.getRoot());
System.out.println(o3 + "\t" + o4);
System.out.println("================我是分割线================");
Object o5 = Ognl.parseExpression("#person.address.homeAddress");
Object o6 = Ognl.getValue(o5, context, context.getRoot());
System.out.println(o5 + "\t" + o6);
System.out.println("================我是分割线================");
// 可以调用方法
Object o7 = Ognl.parseExpression("#person.name.toUpperCase()");
Object o8 = Ognl.getValue(o7, context, context.getRoot());
System.out.println(o7 + "\t" + o8);
System.out.println("================我是分割线================");
Object o9 = Ognl
.parseExpression("@java.lang.Integer@toBinaryString(20)");
Object o10 = Ognl.getValue(o9, context, context.getRoot());
System.out.println(o9 + "\t" + o10);
System.out.println("================我是分割线================");
Object o11 = Ognl.parseExpression("new java.util.LinkedList()");
Object o12 = Ognl.getValue(o11, context, context.getRoot());
System.out.println(o11 + "\t" + o12);
System.out.println("================我是分割线================");
Object o111 = Ognl.parseExpression("new java.awt.Frame()");
Object o121 = Ognl.getValue(o111, context, context.getRoot());
System.out.println(o111 + "\t" + o121);
System.out.println("================我是分割线================");
Object o13 = Ognl.parseExpression("@@abs(-55)");
Object o14 = Ognl.getValue(o13, context, context.getRoot());
System.out.println(o13 + "\t" + o14);
System.out.println("================我是分割线================");
Object o15 = Ognl.getValue(
"#{'dongdong':'jingjing','dong':'jing'}['dongdong']", context,
context.getRoot());
System.out.println(o15);
System.out.println("================我是分割线================");
List<MyObject> list = new ArrayList<MyObject>();
list.add(new MyObject("dongdong", 22));
list.add(new MyObject("jingjing", 21));
list.add(new MyObject("dong", 22));
list.add(new MyObject("jing", 21));
context.put("list", list);
// Object o1111 = Ognl.getValue("#list.name", context,
// context.getRoot());
// System.out.println(o1111);
// 过滤(filtering),collection.{? expression}
Object o16 = Ognl.getValue("#list.{? #this.name.length()<6}[0].name",
context, context.getRoot());
System.out.println(o16);
System.out.println("================我是分割线================");
// 过滤(filtering),获取到集合中的第一个元素, collection.{^ expression}
Object o17 = Ognl.getValue("#list.{^ #this.name.length()<6}[0].name",
context, context.getRoot());
System.out.println(o17);
System.out.println("================我是分割线================");
// 过滤(filtering),获取到集合中的第一个元素, collection.{$ expression}
Object o18 = Ognl.getValue("#list.{$ #this.name.length()<6}[0].name",
context, context.getRoot());
System.out.println(o18);
System.out.println("================我是分割线================");
// 投影(projection), collection. {expression}
Object o19 = Ognl.getValue("#list.{name}", context, context.getRoot());
System.out.println(o19);
System.out.println("================我是分割线================");
// OGNL支持三元运算符
Object o20 = Ognl.getValue(
"#list.{#this.name.length()<6?'love xiaojing':#this.name}",
context, context.getRoot());
System.out.println(o20);
}
}
运行结果
name xiaojing
================我是分割线================
friends[0] huiping
================我是分割线================
#person.address.homeAddress jiyuan
================我是分割线================
#person.name.toUpperCase() DONGDONG
================我是分割线================
@java.lang.Integer@toBinaryString(20) 10100
================我是分割线================
new java.util.LinkedList() []
================我是分割线================
new java.awt.Frame() java.awt.Frame[frame0,0,0,0x0,invalid,hidden,layout=java.awt.BorderLayout,title=,resizable,normal]
================我是分割线================
@java.lang.Math@abs(-55) 55
================我是分割线================
jingjing
================我是分割线================
dong
================我是分割线================
dong
================我是分割线================
jing
================我是分割线================
[dongdong, jingjing, dong, jing]
================我是分割线================
[dongdong, jingjing, love xiaojing, love xiaojing]
分享到:
相关推荐
OGNL表达式总结,个人学习笔记,包含尽可能多的OGNL标签的使用方法,实例等,供大家学习使用
OGNL学习资料范例
struts2 OGNL的主要用法 基本覆盖全部
ognl语言表达式总结,超详细的,每一个细节都经过验证通过
OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科
ognl表达式 ognl表达式 ognl表达式 ognl表达式
这是自己用的ognl表达式学习的ppt,不要下载!
学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理学习OGNL在Struts2中工作原理
NULL 博文链接:https://huguifuture.iteye.com/blog/761843
开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12...
camel-ognl-1.6.4.jar, camel-ognl-2.8.1.jar, com.springsource.org.ognl-2.6.9.jar, com.springsource.org.ognl-sources-2.6.9.jar, ognl-2.5.1.jar, ognl-2.6.11.jar, ognl-2.6.3.jar, ognl-2.6.5.jar, ognl-...
有对struts2标签和OGNL的总结。
ognl源码 ognl源码 ognl源码 ognl源码 ognl源码
ognl.jar ognl.jar
OGNL 最初是为了能够使用对象的属性名来建立 UI 组件 (component) 和 控制器 (controllers) 之间的联系,简单来说就是:视图 与 控制器 之间数据的联系。后来为了应付更加复杂的数据关系,Drew Davidson 发明了一个...
ognl ognl 文件
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...
OGNL2.6.9-API
OGNL 源代码 jar 个人笔记 方便学习者使用广大JAVA爱好者学习使用
JS:ognl表达式 JS:ognl表达式 JS:ognl表达式