Struts2之ognl表达式(上)

原创 2012年03月22日 11:25:03

hibernate提供对ognl的支持

        ognl不只在hibernate中可以使用,她还可以单独的使用在普通的java appliction中不过要2个jar包支持:ognl-....jar 和 javassist-.....jar

    下面通过一个实例来讲述ognl的使用。

     在src下新建Course和Student类其源码为:

//course
public class Course {
    int id;
    String name;
    //省略setXXX getXXX方法
}
//student
public class Student {
    String name;
    Course[] course;
    //省略setXXX getXXX方法
    
}

    建立TestOgnl类,开始使用ognl,然后通过代码讲述ognl的使用

import ognl.Ognl;
import ognl.OgnlContext;


public class TestOgnl {

	public static void main(String[] args) throws Exception {
        Student s1 = new Student();
        Course c1 = new Course();
        
        s1.setName("liusheng");
        c1.setId(1);
        c1.setName("english");
        Course[] courses = new Course[1];
        courses[0] = c1;
        s1.setCourse(courses);
        
        OgnlContext context = new OgnlContext();//
        context.put("student",s1);
        context.put("course", c1);
        context.setRoot(s1);
        
        /*
         * 对普通属性的操作方法
         */
        Object o1 = Ognl.parseExpression("name");
        Object o2 = Ognl.getValue(o1, context,context.getRoot());
        System.out.println(o1);
        System.out.println(o2);
        System.out.println(Ognl.getValue("#student.course[0].name", context, context.getRoot()));
        System.out.println(Ognl.getValue("#student.course[0].name.length()", context, context.getRoot()));
        
        System.out.println(Ognl.getValue("#course.id",context,context.getRoot()));
        /*
         * 操作静态方法的规则"@package.class@method(pamarater)"
         */
        System.out.println(Ognl.getValue("@java.lang.Math@max(1,4)", context, context.getRoot()));
        
	}

}
输出结果为:
name
liusheng
english
7
1
4
    ognl有context的概念,用OgnlContext的构造方法就能实例化一个ognl让下文

    OgnlContext类实现了Map接口,其声明方式为:

    public class OgnlContext extends Object implements Map
    所以得到的context也可以说是Map对象,将key-value放入map中然后,通过ognl的规则去得值。

    ognl可以使用对象的特定方法,也可以使用静态方法。


struts2标签和OGNL表达式.doc

  • 2011年07月26日 11:30
  • 80KB
  • 下载

struts2-OGNL表达式测试

  • 2016年09月28日 15:58
  • 19KB
  • 下载

Struts2 如何使用OGNL表达式访问静态方法和属性

OGNL访问静态方法、静态属性 (1)访问静态方法或者静态属性的语法分别为:@类的路径@方法名,@类的路径@属性名,语法中类的路径,即包名+类名。 (2).对于OGNL来说,java....

struts2 OGNL表达式使用

  • 2012年02月20日 14:31
  • 16KB
  • 下载

struts2标签和OGNL表达式

  • 2011年01月20日 13:53
  • 42KB
  • 下载

Struts2核心(二)----使用OGNL表达式

转载请注明:http://blog.csdn.net/uniquewonderq 使用OGNL表达式: 1.访问基本属性和实体对象 方案: 在一次请求中,我们可以在页面上使用OGNL访问Acti...

精通struts2的ognl表达式

  • 2010年09月28日 19:34
  • 4KB
  • 下载

OGNL表达式struts2标签

  • 2011年03月25日 09:46
  • 23KB
  • 下载

struts2中OGNL表达式

1.1.1   ▲OGNL表达式 1.1.1.1       OGNL表达式基础 1.      OGNL是ObjectGraphic Navigation Language(对象图导航语言)的缩写,...

Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法

1.上一篇文章,我介绍了OGNL表达式语言,本来想在那篇文章上加上一个使用OGNL访问静态方法和静态属性的例子,但是昨天晚上我写代码时,报了一个警告,获取得到静态属性的值,却获取不到静态方法的返回值,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2之ognl表达式(上)
举报原因:
原因补充:

(最多只允许输入30个字)