首页 > 代码库 > Ognl的底层用法
Ognl的底层用法
今天学了下ognl的运用,在这里和大家分享一下。希望对大家有所帮助。
package com.hcj.test; import java.util.ArrayList; import java.util.List; import ognl.Ognl; import ognl.OgnlContext; import ognl.OgnlException; public class Test { public static void main(String[] args) throws OgnlException { Person p = new Person(); p.setName("张三"); Cat cat = new Cat(); cat.setName("花猫"); //创建ognl上下文 OgnlContext ognlContext = new OgnlContext(); ognlContext.put("person", p); ognlContext.put("cat", cat); //设置person根对象 ognlContext.setRoot(p); //获取根对象 Object root = ognlContext.getRoot(); //获取根对象的属性 Object obj1 = Ognl.parseExpression("name"); System.out.println(obj1); Object value1 = Ognl.getValue(obj1, ognlContext, root); System.out.println(value1); System.out.println("=========="); //访问非根对象的属性 Object obj2 = Ognl.parseExpression("#cat.name"); System.out.println(obj2); Object value2 = Ognl.getValue(obj2, ognlContext, root); System.out.println(value2); System.out.println("=========="); //访问类的静态方法 Object obj3 = Ognl.parseExpression("@java.lang.Math@PI"); System.out.println(obj3); Object value3 = Ognl.getValue(obj3, ognlContext, root); System.out.println(value3); System.out.println("======"); //访问math方法 Object obj4 = Ognl.parseExpression("@@max(1,3)"); System.out.println(obj4); Object value4 = Ognl.getValue(obj4, ognlContext, root); System.out.println(value4); System.out.println("======"); //创建对象 Object obj5 = Ognl.parseExpression("new com.hcj.test.Cat()"); System.out.println(obj5); Object value5 = Ognl.getValue(obj5, ognlContext, root); System.out.println(value5); System.out.println("======"); //创建list对象 Object obj6 = Ognl.parseExpression("{'a','b','c'}"); System.out.println(obj6); Object value6 = Ognl.getValue(obj6, ognlContext, root); System.out.println(value6); System.out.println("======"); //访问list对象属性 Object obj7 = Ognl.parseExpression("{'a','b','c'}[1]"); System.out.println(obj7); Object value7 = Ognl.getValue(obj7, ognlContext, root); System.out.println(value7); System.out.println("======"); //创建map对象 Object obj8 = Ognl.parseExpression("#{'1':'aa', '2':'bb', '3':'cc'}"); System.out.println(obj8); Object value8 = Ognl.getValue(obj8, ognlContext, root); System.out.println(value8); System.out.println("======"); //访问map对象属性 Object obj9 = Ognl.parseExpression("#{'1':'aa', '2':'bb', '3':'cc'}['3']"); System.out.println(obj9); Object value9 = Ognl.getValue(obj9, ognlContext, root); System.out.println(value9); System.out.println("======"); //选择,格式: collection.{? expression} List<Person> persons = new ArrayList<Person>(); Person p1 = new Person(); p1.setName("zz12345"); Person p2 = new Person(); p2.setName("aa121312"); Person p3 = new Person(); p3.setName("bb"); persons.add(p1); persons.add(p2); persons.add(p3); //将persons放入ognl上下文中 ognlContext.put("persons", persons); Object obj10 = Ognl.parseExpression("#persons.{? #this.name.length() > 2}"); System.out.println(obj10); Object value10 = Ognl.getValue(obj10, ognlContext, root); System.out.println(value10); System.out.println("======"); //投影,格式: collection.{? expression} Object obj11 = Ognl.parseExpression("#persons.{#this.name}"); System.out.println(obj11); Object value11 = Ognl.getValue(obj11, ognlContext, root); System.out.println(value11); System.out.println("======"); } }
输出结果:
name 张三 ========== #cat.name 花猫 ========== @java.lang.Math@PI 3.141592653589793 ====== @java.lang.Math@max(1, 3) 3 ====== new com.hcj.test.Cat() com.hcj.test.Cat@1dff3a2 ====== { 'a', 'b', 'c' } [a, b, c] ====== { 'a', 'b', 'c' }[1] b ====== #{ '1' : "aa", '2' : "bb", '3' : "cc" } {1=aa, 2=bb, 3=cc} ====== #{ '1' : "aa", '2' : "bb", '3' : "cc" }['3'] cc ====== #persons.{? (#this.name.length() > 2) } [com.hcj.test.Person@b988a6, com.hcj.test.Person@ba6c83] ====== #persons.{ #this.name } [zz12345, aa121312, bb] ======
Ognl的底层用法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。