1. 基本对象树的访问

对象树的访问就是通过使用点号将对象的引用串联起来进行。

例如:name,department.name,user.department.factory.manager.name

2. 对容器变量的访问

对容器变量的访问,通过#符号加上表达式进行。

例如:#name,#department.name,#user.department.factory.manager.name

3. 使用操作符号

OGNL表达式中能使用的操作符基本跟Java里的操作符一样,除了能使用 +, -, *, /, ++, --, ==, !=, = 等操作符之外,还能使用 mod, in, not in等。

4. 容器、数组、对象

OGNL支持对数组和ArrayList等容器的顺序访问:

例如:group.users[0]

同时,OGNL支持对Map的按键值查找:

例如:#session['mySessionPropKey']

不仅如此,OGNL还支持容器的构造的表达式:

例如:{"green", "red", "blue"}构造一个List,#{"key1" : "value1", "key2" : "value2", "key3" : "value3"}构造一个Map

你也可以通过任意类对象的构造函数进行对象新建:

例如:new java.net.URL("http://localhost/")

5. 对静态方法或变量的访问

要引用类的静态方法和字段,他们的表达方式是一样的@class@member或者@class@method(args):

例如:@com.javaeye.core.Resource@ENABLE,@com.javaeye.core.Resource@getAllResources

6. 方法调用

直接通过类似Java的方法调用方式进行,你甚至可以传递参数:

例如:user.getName(),group.users.size(),group.containsUser(#requestUser)

7. 投影和选择

OGNL支持类似数据库中的投影(projection) 和选择(selection)。

投影就是选出集合中每个元素的相同属性组成新的集合,类似于关系数据库的字段操作。投影操作语法为 collection.{XXX},其中XXX 是这个集合中每个元素的公共属性。

例如:group.userList.{username}将获得某个group中的所有user的name的列表。

选择就是过滤满足selection 条件的集合元素,类似于关系数据库的纪录操作。选择操作的语法为:collection.{X YYY},其中X 是一个选择操作符,后面则是选择用的逻辑表达式。而选择操作符有三种:

? 选择满足条件的所有元素

^ 选择满足条件的第一个元素

$ 选择满足条件的最后一个元素

例如:group.userList.{? #this.name != null}将获得某个group中user的name不为空的user的列表。

java ognl表达式_常用的OGNL表达式相关推荐

  1. Java应用编程_常用类库汇总2(日期类正则表达式国际化程序)

    总览[Java SE] 相关文章链接 [Java应用编程_常用类库汇总1(字符串处理类&&对象克隆&数字操作类库&-)] [Java应用编程_常用类库汇总3(开发支持类 ...

  2. java lambda表达式_高性能的 Lambda 表达式,简洁优雅图文并茂

    来源:知乎 Mingqi 链接:https://www.zhihu.com/question/20125256/answer/324121308 有网友问,Lambda 表达式有何用处?如何使用?在P ...

  3. mel表达式_常用表达式Mel的用法-李英江-

    http://www.cgsir.com 2008 年 8 月 目录: 一.介绍 ........................................................... ...

  4. java 匿名委托_委托,匿名方法,λ 表达式

    1.委托:委托本质上就是函数指针,但由于指针过于灵活,因此在很多语言中都采用了更加安全的替代类型,比如Delphi的对象方法和C#的委托.委托使得方法可以做为参数进行传递,极大的方便了程序的处理(事件 ...

  5. 前缀表达式后缀表达式_你知道波兰表达式和逆波兰表达式吗

    什么是波兰表达式 我们日常的运算表达式通常是如下形式,这种成为中缀表达式,也就是运算符在运算数的中间.这种表达式人类很容易识别,并根据其进行计算,但计算机识别这种表达式非常困难. a + b * (c ...

  6. java 拉姆表达式_强大的拉姆表达式转Sql 类库 - SqlSugar 隐藏功能之Lambda

    使用场景 1.Lambda to sql 一直是ORM中最难的功能之一,如果有现成的解析库那么自已写一个ORM难度将大大降低 2.通过Lambda作为KEY进行缓存操作,特别是仓储模式想要拿到表达式进 ...

  7. java 简单 语言_将简单的表达式语言放入java中

    使用 JavaScript engine that is bundled with Java 1.6怎么样? 您可以看到如何传递所有参数: ScriptEngineManager manager = ...

  8. java求值不用后缀表达式_数据结构之后缀表达式求值(java实现)

    数据结构之后缀表达式求值(java实现) 前记 ​ 今天在刷leet code的时候刷到了一道题,后缀表达式(逆波兰表达式)求值,我花了一会儿写了一下它的解法.但是今天我不谈什么是后缀表达式,有兴趣的 ...

  9. java检测工具_常用Java代码质量检测评估工具

    常用Java代码质量检测评估工具 1. PMD from http://pmd.sourceforge.net/ PMD能够扫描Java 源代码,查找类似以下的潜在问题: 可能的bug--try/ca ...

  10. 后缀转中缀表达式_中缀转后缀表达式代码实现(下)及计算器完整版

    南故笙烟:中缀表达式转为后缀表达式​zhuanlan.zhihu.com 思路分析 1.初始化两个栈:运算符栈s1和储存中间结果的栈s2 2.从左至右扫描中缀表达式 3.遇到操作数时,将其压入s2 4 ...

最新文章

  1. COMET | 概念学习使机器具有人的思维方式
  2. 基建管控系统_科技|电力北斗科技创新为数字新基建赋能
  3. Java利用QRCode.jar包实现二维码编码与解码
  4. redis(19)--事务
  5. php-fpm的pool php-fpm慢执行日志 open_basedir php-fpm进程管理
  6. Spring Boot基础学习笔记21:自定义用户认证
  7. mySAP标准培训教材全套列表
  8. 使用XML及XSL生成简单HTML
  9. 趣学 C 语言(三)—— 琐碎
  10. php use后怎么引用函数,php后向引用怎么带入到函数参数
  11. python 嵌套list的一些小结
  12. tp3.2 视图中U函数传变量值
  13. 使用verdaccio搭建npm私服
  14. 485芯片AB波形正负半周的问题探讨
  15. pixhawk通信机制
  16. 一阶微分方程组c语言编程,一阶常微分方程数值解的C语言编程实现
  17. CentOS7-1810 系统DNS服务器BIND软件配置说明
  18. java计算机毕业设计高校学生综合素质测评系统MyBatis+系统+LW文档+源码+调试部署
  19. shopify 与国内第三方建站服务平台的比较(店匠、shopline、shopyy、ueeshop)
  20. tcp-ip网络模型-物理层

热门文章

  1. php旅游管理系统,基于Laravel框架开发的旅游网站管理系统PHP源码
  2. 力学 —— 物体固有属性之惯性张量矩阵
  3. 同花顺数据同步到mysql_同花顺数据库怎么购买,同花顺ifind账号
  4. 【转】无线路由器密码破解
  5. ibm服务器修改ide,IBM刀片服务器配置IDE RAID的方法
  6. 自动跑程序vbs脚本
  7. linux 在ftp gt 下登录,cutftp显示的是啥意思?
  8. iis 6 7 8预加载,提升web访速
  9. Node.js内存泄漏分析
  10. 汉字编码及区位码查询算法