【Struts2】OGNL表达式
来源:互联网 发布:高盛 知乎 编辑:程序博客网 时间:2024/06/06 06:58
【整体介绍】
OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言,通过它简单一致的表
达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。
【简单对比】
Struts2中默认是使用OGNL取代EL来做界面数据绑定,所谓界面数据绑定,也就是把界面元素(例如一个
textfield,hidden)和对象层某个类的某个属性绑定在一起,修改和显示自动同步。
和struts1的formbean相比,这样做的好处非常明显:在webwork中不需要为每个页面专门写formbean,可以
直接利用对象层的对象。
【基本用法】
使用前的准备:在要是用标签的JSP页面引入标签库:<%@taglib uri="/struts-tags" prefix="s"%>
在web.xml中声明:
<filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter>
OGNL是通常要结合Struts 2的标志一起使用。主要是#、%和$这三个符号的使用。下面就以取数据为例,看看这
三个符号的使用。
1. #:
1) 取request、session、application里的attribute,需要加前缀。
如:<s:property value="#session.username"/>、<s:property value="#application.us
erId"/>。如果是从request中取数据,则不需要加request前缀。
OGNL默认是从request中取,如果没有取到并不会从session或application中取。
如<s:property value="#name"/>。
2) 取request里的请求参数,但必须加parameters前缀,且取到的是一个数组。所以如果要取参数
的第一项,还需要加上下标。
如:<s:property value="#parameters.name[0]"/>。
3) 加attr前缀能按request > session > application顺序取attribute,这样在request中取不到
,会自动向session中取,如果session取不到,会向application中取。如果取到则返回,不再向上游历。
如:<s:property value="#attr.name"/>。
4) 可以构造Map。
如:<s:radio name="gender" list="{'男', '女'}"/>。
5) 能用于过滤和投影集合。
如:books.{?#this.price<100}。
2. %:
用途是在标签的属性值被理解为字符串类型时,告诉执行环境%{}里的是OGNL表达式。实际上是让被
理解为字符串的表达式,当成真正的OGNL来执行。
如:<s:form action="user_%{id == null ? 'add' : 'edit'}"> </s:form>
这里的意思就是把'add'和'edit'当成字符串,而取add还是edit加了一个id的判断条件,这样一来
,id!=null的时候,其实action="user_edit",而id==null,action="user_add",从而实现执行不同的action。
3. $:
1) 在国际化资源文件中,引用OGNL表达式。
例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同
${max}之间。
2) 在Struts 2框架的配置文件中引用OGNL表达式。
例如:
【学习总结】
之前接触过一个用Struts1框架的项目,那时候每个实体都会有一个formBean文件,就是为了传递数据,
而且JSP页面上存取数据的代码写的很混乱。
现在又一次接触到Struts2的框架,感受到了OGNL表达式的方便,代码也简单了很多。对OGNL表达式的使用,
刚开始可能很不熟悉,还是要多用用。
0 0
- struts2的OGNL表达式
- struts2的OGNL表达式
- OGNL表达式struts2标签“%,#,$”
- struts2 OGNL表达式
- OGNL表达式struts2标签“%,#,$”
- Struts2中的OGNL表达式
- 再论 Struts2 OGNL表达式
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- struts2 ognl 表达式
- OGNL表达式struts2标签“%,#,$”
- Struts2 OGNL表达式介绍
- Struts2 OGNL 表达式
- OGNL表达式struts2标签“%,#,$”
- struts2 OGNL表达式小记
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- OGNL表达式struts2标签“%,#,$”
- 家用nas选购指南
- Learning from Imbalanced Data 非均衡数据学习问题
- 使用nginx工具如何来配置域名
- 双camera同时打开
- SparkStreaming+Kafka+Spark SQL+TopN+Mysql 电商广告点击综合案例
- 【Struts2】OGNL表达式
- 基础练习 芯片测试
- Python3.5 中plt无法画出图像
- 微信小程序 仿QQ用户列表
- VS Code
- SPOJ D-query(主席树应用)
- 函数指针
- ThreadPoolExecutor in Java
- 线程安全同步问题