Struts2的OGNL表达式语言
<script></script> 标签:struts2 ognl it | 分类:Spring+hibernate+struts |
OGNL(Object Graph Navigation Language)是一种表达式语言,使用它可以使表达式与java对象中的getter和setter属性绑定,
且一个OGNL表达式可以进行存和取两方面的操作.
1).使用OGNL的好处
- 是一种 可以把GUI元素和model object绑定的语言!且通过OGNL的TypeConverter
机制可以更容易实现值类型的的转换!
- 可以把Web组件和后台的model 绑定(WebOGNL, Tapestry,WeboWork,WebOjbects)
2).OGNL表达式
OGNL使用集合
使用Collection中的元素须用索引,如:得到array中第一个元素表达式为array[0]
List
例子: name in{null,"init"} 这个例子 当name属性是 空或"init"返回true ,
而在这个过程中会创建List接口的一个实例,具体的子类没有指定
本地Arrays OGNL支持创建Java本地数组! 且允许给定存在的list或设定数组的的大小
new int[] {1,2,3} 创建一个int 数组
new int[5] 创建了一个int数组,它的元素的值为0
Maps 创建Map #{"foo":"fool value","bar":"bar value"}
我们甚至可以指定一个特定的java Map Class 去创建Map
#@java.util.LinkedHashMap@{"foo":"foo value","bar":bar value"};
Java Collection各自有一些特殊的属性
Collection | Special Properties |
Collection(子类有Map List Set) |
size 集合的大小 isEmpty 如果集合为空值为true |
List | iterator 得到此list的迭代器 |
Map |
keys 得到一个包涵所有键值的Set values 得到一个包括所有值的Collection |
Set | iterator 得到此Set的迭代器 |
Iterator |
next 得到集合中的下一个object hasNext如果集合中有下一个object则返回true |
Enumeration |
next 如上 hasNext如上 nextElement 和next一样的作用 hasMoreElements和hasNext一样作用 |
OGNL调用JavaBean 索引属性
JavaBean索引属性的格式如下
public PropertyType[] getPropertyName()
public void setPropertyName(propertyType[] anArray)
public PropertyType getPropertyName(int index);
public void setPropertyName(int index,PropertyType value)
OGNL可以很容易地通过索引存取这些属性, Example
someProperty[2]
在这个例子中OGNL会自动找到getSomeProperty(2)或存到setSomeProperty (2,value)中!
调用OGNL对象索引属性
对象索引属性格式
public PropertyType getPropertyName(IndexType index)
public void setPropertyName(IndexType index,PropertyType value)
PropertyType 和IndexType 必需跟集合和get方法中的类型相配
调用方法
OGNL调用方法和Java调用方法有一点区别,因为OGNL是被解释的并且必需在运行时选择正确的方法,所以OGNL调用方法时除了提供所需要参数没有额外的类型信息,OGNL选择和提供的参数最配的方法,如果有两个或更多的方法符合匹配,它们中的一个会任意的被选择(在WebWork中会选择ValueStack上面的方法)
特别一提的是 ,null可以匹配所有非基础类型,所有它通常会导致一个不确定的方法被调用
变量的调用
OGNL有一个简单的变量配置,在这儿你可以存储中间值和重新使用这些中间值,或者仅仅命名以使表达式更易理解! 在OGNL中所有变量都是全局的,使用变量的格式是"#variable"
OGNL把当前的object在每点的表达式值存放在"this"这个变量中,而且"this"可以像其它变量一样使用!例:
listeners.size().(#this>100?2*this:20+#this) 如果listeners中的元素大于100会返回元素数量的两倍,否则数量加上20
可以显式地给变量赋值,只要在变量的后边写一个表达式即可
#var -99
一.运算符 | ||||||||||||||||||||||||||||||||||||||||||||||||
OGNL借用了java的大多数符号,而且它还加了一些新的符号, 如下表:
|
http://blog.sina.com.cn/s/blog_5c0522dd0100cnbi.html
Struts2的OGNL表达式语言相关推荐
- Struts2之OGNL表达式语言
1.OGNL是Object-Graph Navigation Language的缩写,是一种功能强大的表达式语言,通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构 ...
- Struts2中使用OGNL表达式语言访问静态方法和静态属性以及我遇到的问题和解决方法
1.上一篇文章,我介绍了OGNL表达式语言,本来想在那篇文章上加上一个使用OGNL访问静态方法和静态属性的例子,但是昨天晚上我写代码时,报了一个警告,获取得到静态属性的值,却获取不到静态方法的返回值, ...
- OGNL表达式语言中的#和$的区别
Struts2使用标准的Context来进行OGNL表达式语言求值,OGNL的顶级对象是一个Context,这个Context对象就是一个Map类型实例,其根对象就是 ValueStack,如果需要访 ...
- OGNL表达式语言浅谈
OGNL(Object Graphic Navigation Language,对象图导航语言)是一种功能强大的EL(Expression Language,表达式语言,JSP2.0规范),Strut ...
- struts2的OGNL表达式理解(一)
一,什么是OGNL表达式 OGNL是Object-Graph Navigation Language(对象图导航语言)的缩写,它是一种功能强大的表达式语言(Expression Languag ...
- Java el ognl 正则,struts2中ognl表达式 各种合集_struts2 ognl 正则表达式_struts2 ognl表达式...
摘要 0x00 前言 它们是对结构说明236的引用(因为字段256中的代码和在字段240中的代码相同)和对数据结构222的开始的引用,字段258包含该开始地址.三.data uri schema将文件 ...
- Struts2:OGNL表达式
OGNL表达式 OGNL(Object-Graph Navigation Language)的全称是对象图导航语言,是一个用来获取和设置java对象属性的表达式语言的开源表达式语言,通过使用表达式语法 ...
- 深入分析JavaWeb Item48 -- Struts2中OGNL表达式与ValueStack
一.OGNL表达式 1.OGNL表达式介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作 ...
- JSTL/EL表达式/Struts2标签/OGNL表达式
文章目录 JSTL + EL表达式 Struts 标签 + OGNL表达式 JSTL + EL表达式 JSTL 只能用在 JSP 文件中,不可以在 XML 和 HTML 文件中使用,不可以用在 JS ...
最新文章
- 匹配算法:局部结构保留
- mysql 001_Mysql错误积累001
- FZU 2082 过路费
- 域名服务器(DNS)工作原理
- 【连载】如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(3)
- Linux 设置定时任务 清空日志
- 从spring管理的datasource中获取connection
- HDP SandBox 安装与初步配置
- 推荐系统之协同过滤(CF)算法详解和实现
- 自由手写体字帖pdf_20款漂亮的手写字体,可供下载
- Powerbuilder webform,webservices 倍力文档在线查看
- Social Network Visualizer社交网络可视化,导入txt数据集
- 佳能微单R6断电DAT文件MP4视频完美修复不卡顿
- 爱上调试:div初探,参照物的重要性!
- wireshark出现rst的原因_多次RST以及不同场景下的RST报文的差异
- dabo(达泊西汀)
- 有关于成长的七个关键词
- css3实现3d效果的立方体动画
- 计算机键盘无法使用的原因,电脑键盘失灵的原因及其解决方法
- java博客论坛设计报告,javaweb课程设计报告-个人博客网站的实现(Java).doc