博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OGNL
阅读量:5091 次
发布时间:2019-06-13

本文共 1267 字,大约阅读时间需要 4 分钟。

一、OGNL简介

  OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去

存取对象的属性。

二、相对其它表达式语言具有下面几大优势

  1、支持对象方法调用,如xxx.doSomeSpecial();

  2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;

  3、支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(price*discount),这个表达式会返回80

  4、访问OGNL上下文(OGNL context)和ActionContext

  5、操作集合对象

  6、可以直接new一个对象

三、结合Struts2符号(#、%、$)使用,主要有三种用途

  1、访问OGNL上下文和Action上下文,#相当于ActionContext.getContext()

  2、用于过滤和投影(projecting)集合,如books.{?#this.price<100}

  3、构造Map,如#{'foo1':'bar1', 'foo2':'bar2'}

四、表达式

  1、基本对象树的访问:用 . (点号)连接对象和属性

  2、对容器变量的访问:用 # (井号)加上表达式

  3、使用操作符号

  4、数组、ArrayList等容器顺序访问,Map按键查找,容器的构造表达式、对象构建

     如:group.users[0]

      #session['mySessionPropKey']

        {"green", "red", "blue"}构造一个List、

        #{"key1" : "value1", "key2" : "value2", "key3" : "value3"}构造一个Map

     new Java.net.URL("xxxxxx/")

  5、对静态方法或变量的访问,如:@com.javaeye.core.Resource@ENABLE

  6、方法调用:group.containsUser(#requestUser)

  7、投影或选择:投影 group.userList.{username}       选择group.userList.{? #txxx.xxx != null}

  选择操作符有三种:

  ? 选择满足条件的所有元素
  ^ 选择满足条件的第一个元素
  $ 选择满足条件的最后一个元素

转载于:https://www.cnblogs.com/zxguan/p/7819605.html

你可能感兴趣的文章
jQuery.form.js使用
查看>>
(转)linux sort,uniq,cut,wc命令详解
查看>>
关于ExecuteNonQuery执行的返回值(SQL语句、存储过程)
查看>>
UVa540 Team Queue(队列queue)
查看>>
mysql数据增删改查
查看>>
akka之种子节点
查看>>
不知道做什么时
查看>>
matlab 给某一列乘上一个系数
查看>>
密码学笔记——培根密码
查看>>
Screening technology proved cost effective deal
查看>>
MAC 上升级python为最新版本
查看>>
创业老板不能犯的十种错误
查看>>
Animations介绍及实例
查看>>
判断请求是否为ajax请求
查看>>
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>