轻量级JavaEE企业应用实战(十三)
来源:互联网 发布:录制屏幕软件使用 编辑:程序博客网 时间:2024/04/29 11:41
OGNL表达式
传统的OGNL表达式求职中,系统会假设只有一个根对象;如果系统的Stack Context中包含两个对象:foo对象,它在Context中的名字为foo; bar对象,它在Context中的名字是bar,并将foo对象设置成Context的根对象
//返回foo.getBlah();方法返回值#foo.blah//返回bar.getBlah();#bar.blah//foo是根对象,默认是取得foo对象的blah属性#blah
通过索引访问Stack Context中的对象
Stack Context包含两个根实例:animal实例是栈顶元素,person实例在后
//animal.getName();[0].name//person.getName();[1].name
Struts2使用标准的Context来进行OGNL表达式的求值,这个对象就是一个Map的实例类型,其根对象是ValueStack,可以通过以下方式获取ValueStack里的属性
${bar}
OGNL中的集合操作
使用OGNL表达式可以直接创建集合
List : {e1, e2, e3}Map : #{key1:value1, key2:value2}
OGNL表达式提供了两个运算符:in、not in,in判断某个元素是否在指定集合中;not in相反
示例:<s:if test=" 'foo' in {'foo', 'bar'}"> 包含</s:if><s:else> 不包含</s:else>
除此之外,OGNL还允许通过某个规则取得集合的子集。
? : 取出所有符合选择逻辑的元素^ : 取出符合选择逻辑的第一个元素$ : 取出符合逻辑的最后一个元素person.relatives.{? #this.gender == 'male'}意义:取出person的所有性别为male的relatives(亲戚)集合
访问静态成员
想要OGNL表达式访问静态成员<constant name="struts.ognl.allowStaticMethodAccess" value="true" />设置上边的常量,OGNL表达式可以通过如下访问静态成员@className@staticField@className@staticMethod(val...)在JSP页面<s:property value="@java.lang.System@getenv('JAVA_HOME')" /><s:property value="@java.lang.Math@PI" />
Lambda表达式
OGNL表达式支持基本的Lambda表达式,可以使用一些简单的函数
假设有下斐波那契数列if n==0 return 0;elseif n==1 return 1;else return fib(n-2)+fib(n-1)<s:property value="#fib =: [#this==0? 0: #this==1? 1: #fib(#this-2) + #fib(#this-1)], #fib(11)" />
0 0
- 轻量级JavaEE企业应用实战(十三)
- 轻量级JavaEE企业应用实战(一)
- 轻量级JavaEE企业应用实战(二)
- 轻量级JavaEE企业应用实战(三)
- 轻量级JavaEE企业应用实战(四)
- 轻量级JavaEE企业应用实战(五)
- 轻量级JavaEE企业应用实战(六)
- 轻量级JavaEE企业应用实战(七)
- 轻量级JavaEE企业应用实战(八)
- 轻量级JavaEE企业应用实战(九)
- 轻量级JavaEE企业应用实战(十)
- 轻量级JavaEE企业应用实战(十一)
- 轻量级JavaEE企业应用实战(十二)
- 轻量级JavaEE企业应用实战(十四)
- 轻量级JavaEE企业应用实战(十五)
- 轻量级JavaEE企业应用实战(十六)
- 轻量级JavaEE企业应用实战(十七)
- 轻量级JavaEE企业应用实战(十八)
- Spark调度系列-----5.Spark task和Stage的跳过执行(ui显示task和stage skipped)
- 破坏
- 黑马程序员--反射的“魅力”
- Android--广播BroadcastReceiver
- 查看命名服务上的服务的具体地址ip 和端口
- 轻量级JavaEE企业应用实战(十三)
- Android Studio系列教程三--快捷键
- [你所不知的JavaScript] 作用域和闭包 Chapter1: 什么是作用域
- <学习笔记> jQuery 国际化多语言
- Android--Dialog详细讲解
- echarts折线图纵横轴采用类似定义{value}KB/s单位过长被遮挡
- setsockopt()
- Android Studio系列教程四--Gradle基础
- Range Sum Query - Immutable