Struts2之ognl表达式(下)

原创 2012年03月22日 11:33:28

Struts2中用ognl操作集合和映射

在上一篇文章中的Course类中重写toString方法,在TestOgnl的main方法中加入以下代码

 /*
         * 对ognl来说集合和数组是一样的
         */
        List<Course> list = new ArrayList<Course>();
        Course c2 = new Course(2,"name2");
        Course c3 = new Course(3,"name3");
        Course c4 = new Course(4,"name4");
        Course c5 = new Course(5,"name5_filtering");
        list.add(c2);
        list.add(c3);
        list.add(c4);
        list.add(c5);
        context.put("list", list);
        System.out.println(Ognl.getValue("#list", context, context.getRoot()));//由于集合中持有的是对象,故是引用
        
        System.out.println(Ognl.getValue("#list[2].name", context, context.getRoot()));
        
        /*
         * ognl操作集合"{'value1','value2','value3'}[3]"
         * ognl操作映射 "#{'key1':'value1','key2':'value2'}[key3]" 这里的#和以上的#的意思不同
         */
        Map<String,String> map = new TreeMap<String,String>();
        map.put("key1", "value1");
        map.put("key2","value2");
        context.put("map",map);
        System.out.println(Ognl.getValue("#map['key1']", context, context.getRoot()));
        
        /*
         * filtering 过滤操作集合规则 
         * 返回所有内容  : collection.{? expression}   expression ---> #this表示当先对象
         * 返回第一个数据 : collection.{^ expression}
         * 返回最后一个元素 : collection.{$ expression}
         * 
         * projection 投影集合操作规则 collection.{expression}
         * 
         * filtering 和 projecting 的区别相当于一个取得数据库中的行,一个是取得列
         * 
         */
        //use filtering
        System.out.println(Ognl.getValue("#list.{? #this.name.length() > 6}", context, context.getRoot()));
        //use projecting
        System.out.println(Ognl.getValue("#list.{#this.name}", context, context.getRoot()));
        System.out.println(Ognl.getValue("#list.{#this.id}", context, context.getRoot()));
        System.out.println(Ognl.getValue("#list.{#this.name.length() > 6 ? 'hello world' : #this.name}", context, context.getRoot()));
运行结果为:
value1
[id = 5----name = name5_filtering]
[name2, name3, name4, name5_filtering]
[2, 3, 4, 5]
[name2, name3, name4, hello world]
这两篇文章中介绍了ognl的全部使用方法。以后会在博客中给出如何在struts2中使用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个字)