ognl总结

2024-02-16 00:58
文章标签 总结 ognl

本文主要是介绍ognl总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

	// ***************** root对象的概念 ******************* //public void testOgnl_01() throws Exception{User user = new User();user.setUsername("张三");//相当于调用user.getUsername()方法String value = (String)Ognl.getValue("username", user);System.out.println(value);}public void testOgnl_02() throws Exception{User user = new User();Person p = new Person();p.setName("张三");user.setPerson(p);//相当于调用user.getPerson().getName()方法String value = (String)Ognl.getValue("person.name", user);System.out.println(value);}public void testOgnl_03() throws Exception{User user = new User();Person p = new Person();p.setName("张三");user.setPerson(p);//可以使用#root来引用根对象,相当于调用user.getPerson().getName()方法String value = (String)Ognl.getValue("#root.person.name", user);System.out.println(value);}

 

 

// *********************** context的概念 **********************//public void testOgnl_04() throws Exception{Person p1 = new Person();Person p2 = new Person();p1.setName("张三");p2.setName("李四");Map context = new HashMap();context.put("p1", p1);context.put("p2", p2);String value = (String)Ognl.getValue("#p1.name + ',' + #p2.name", context, new Object());System.out.println(value);}public void testOgnl_05() throws Exception{Person p1 = new Person();Person p2 = new Person();p1.setName("张三");p2.setName("李四");Map context = new HashMap();context.put("p1", p1);context.put("p2", p2);User root = new User();root.setUsername("zhangsan");String value = (String)Ognl.getValue("#p1.name + ',' + #p2.name + ',' + username", context, root);System.out.println(value);}

 

 

 

	// ******************* OGNL赋值操作 ************************//public void testOgnl_06() throws Exception{User user = new User();//给root对象的属性赋值,相当于调用user.setUsername()Ognl.setValue("username", user, "zhangsan");System.out.println(user.getUsername());}public void testOgnl_07() throws Exception{User user = new User();Map context = new HashMap();context.put("u", user);//给context中的对象属性赋值,相当于调用user.setUsername()Ognl.setValue("#u.username",context, new Object(), "zhangsan");System.out.println(user.getUsername());}public void testOgnl_08() throws Exception{User user = new User();Map context = new HashMap();context.put("u", user);//给context中的对象属性赋值,相当于调用user.setUsername()//在表达式中使用=赋值操作符来赋值Ognl.getValue("#u.username = '张三'",context, new Object());System.out.println(user.getUsername());}public void testOgnl_09() throws Exception{User user = new User();Person p = new Person();Map context = new HashMap();context.put("u", user);context.put("p", p);//给context中的对象属性赋值,相当于调用user.setUsername()//在表达式中使用=赋值操作符来赋值Ognl.getValue("#u.username = '张三',#p.name = '李四'",context, new Object());System.out.println(user.getUsername()+","+p.getName());}

 

 

 

	//****************** 使用OGNL调用对象的方法 **********************//public void testOgnl_10() throws Exception{User user = new User();user.setUsername("张三");String value = (String)Ognl.getValue("getUsername()", user);System.out.println(value);}public void testOgnl_11() throws Exception{User user = new User();Ognl.getValue("setUsername('张三')", user);System.out.println(user.getUsername());}

 

 

 

	// ********************* OGNL中的this表达式 **********************//public void testOgnl_14() throws Exception{Object root = new Object();Map context = new HashMap();List values = new ArrayList();for(int i=0; i<11; i++){values.add(i);}context.put("values", values);Ognl.getValue("@System@out.println(#values.size.(#this > 10 ? \"大于10\" : '不大于10'))", context, root);}public void testOgnl_15() throws Exception{User user = new User();Ognl.getValue("setUsername('ZHANGSAN')", user);Ognl.getValue("@System@out.println(#this.username)", user);}public void testOgnl_16() throws Exception{User user = new User();Ognl.getValue("setUsername('ZHANGSAN')", user);Ognl.getValue("@System@out.println(username.(#this.toLowerCase()))", user);}

 

 

	// ******************* 如何把表达式的解释结果作为另外一个表达式,OGNL中括号的使用 **********************//public void testOgnl_17() throws Exception{Object root = new Object();Map context = new HashMap();User u = new User();u.setUsername("张三");context.put("u", u);context.put("fact", "username");/*** 1、首先把#fact表达式进行解释,得到一个值:username* 2、解释括号中的表达式#u,其结果是user对象* 3、把括号中表达式的结果作为root对象,解释在第一步中得到的结果(即把第一步的结果看成另外一个表达式) */String value = (String)Ognl.getValue("#fact(#u)", context, root);System.out.println(value);}public void testOgnl_18() throws Exception{Person person = new Person();Map context = new HashMap();User u = new User();u.setUsername("张三");context.put("u", u);/*** 相当于调用person这个根对象的fact方法,并把#u的解释结果作为参数传入此方法 */String value = (String)Ognl.getValue("fact(#u)", context, person);System.out.println(value); //输出是 "张三,"}public void testOgnl_19() throws Exception{Person person = new Person();Map context = new HashMap();User u = new User();u.setUsername("张三");context.put("u", u);/*** 1、先计算表达式fact,得到结果是:username* 2、解释括号中的表达式#u,其结果是user对象* 3、把括号中表达式的结果作为root对象,解释在第一步中得到的结果(即把第一步的结果看成另外一个表达式)*/String value = (String)Ognl.getValue("(fact)(#u)", context, person);System.out.println(value); //输出"张三"}

 

 

	// ********************* OGNL访问集合元素 **************************//public void testOgnl_20() throws Exception{Object root = new Object();Map context = new HashMap();//用OGNL创建List对象List listvalue = (List)Ognl.getValue("{123,'kdjfk','oooo'}", context, root);context.put("listvalue", listvalue);//用OGNL创建数组int[] intarray= (int[])Ognl.getValue("new int[]{23,45,67}", context, root);context.put("intarray", intarray);//用OGNL创建Map对象Map mapvalue = (Map)Ognl.getValue("#{'listvalue':#listvalue,'intarray':#intarray}", context, root);context.put("mapvalue", mapvalue);Ognl.getValue("@System@out.println(#listvalue[0])", context, root);Ognl.getValue("@System@out.println(#intarray[1])", context, root);Ognl.getValue("@System@out.println(#mapvalue['intarray'][2])", context, root);Ognl.getValue("@System@out.println(#mapvalue.intarray[0])", context, root);}

 

 

这篇关于ognl总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713046

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

二分最大匹配总结

HDU 2444  黑白染色 ,二分图判定 const int maxn = 208 ;vector<int> g[maxn] ;int n ;bool vis[maxn] ;int match[maxn] ;;int color[maxn] ;int setcolor(int u , int c){color[u] = c ;for(vector<int>::iter

整数Hash散列总结

方法:    step1  :线性探测  step2 散列   当 h(k)位置已经存储有元素的时候,依次探查(h(k)+i) mod S, i=1,2,3…,直到找到空的存储单元为止。其中,S为 数组长度。 HDU 1496   a*x1^2+b*x2^2+c*x3^2+d*x4^2=0 。 x在 [-100,100] 解的个数  const int MaxN = 3000

状态dp总结

zoj 3631  N 个数中选若干数和(只能选一次)<=M 的最大值 const int Max_N = 38 ;int a[1<<16] , b[1<<16] , x[Max_N] , e[Max_N] ;void GetNum(int g[] , int n , int s[] , int &m){ int i , j , t ;m = 0 ;for(i = 0 ;

go基础知识归纳总结

无缓冲的 channel 和有缓冲的 channel 的区别? 在 Go 语言中,channel 是用来在 goroutines 之间传递数据的主要机制。它们有两种类型:无缓冲的 channel 和有缓冲的 channel。 无缓冲的 channel 行为:无缓冲的 channel 是一种同步的通信方式,发送和接收必须同时发生。如果一个 goroutine 试图通过无缓冲 channel

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

9.8javaweb项目总结

1.主界面用户信息显示 登录成功后,将用户信息存储在记录在 localStorage中,然后进入界面之前通过js来渲染主界面 存储用户信息 将用户信息渲染在主界面上,并且头像设置跳转,到个人资料界面 这里数据库中还没有设置相关信息 2.模糊查找 检测输入框是否有变更,有的话调用方法,进行查找 发送检测请求,然后接收的时候设置最多显示四个类似的搜索结果

java面试常见问题之Hibernate总结

1  Hibernate的检索方式 Ø  导航对象图检索(根据已经加载的对象,导航到其他对象。) Ø  OID检索(按照对象的OID来检索对象。) Ø  HQL检索(使用面向对象的HQL查询语言。) Ø  QBC检索(使用QBC(Qurey By Criteria)API来检索对象。 QBC/QBE离线/在线) Ø  本地SQL检索(使用本地数据库的SQL查询语句。) 包括Hibern