- 浏览: 60968 次
- 性别:
- 来自: 广州
文章分类
最新评论
表达式通常用来访问页面中的各种变量,进行结果输出.
struts2中共支持以下几种表达式语言(默认的是OGNL):
OGNL:可以方便地操作对象属性的开源表达式语言;
JSTL:(JSP Standard Tag Library):JSP2.0集成的标准表达式语言;
Groovy:基于Java平台的动态语言,它具有时下比较流行的动态语言的一些特性;
Velocity:一种基于Java的模板匹配引擎。
一、什么是OGNL
名称:全称是Object-Graph Navigation Language
用途:是一个用来获取 和设置 java对象属性的表达式语言。
应用场合:通过使用表达式语法导航对象图,而不是直接调用对象的获取和设置方法可以提供许多应用。比如在XML文件 或者脚本文件中嵌入OGNL表达式语法,在JSP页面 使用OGNL表达式语法。
操作对象:基于当前对象的上下文。
二、OGNL引用方式
属性名称:如对象user的属性username,可以使用user.username来获取.
方法调用:可以使用user.hashCode()返回当前对象的哈希码.
数组元素:对于userlist数组对象,可以使用userlist[0]来引用其中的某一个元素.
三、OGNL相对其他表达式语言具有下面几大优势
1)支持对象方法调用:如xxx.doSomeSpecial()
2)支持类静态的方法|值调用:格式为"@[类全名(包括包路径)]@[方法名|值名]"。如:
@java.lagn.String@format('foo%s','bar')--调用类静态方法
@tutorial.MyConstant@APP_NAME--访问类的静态值
3)支持赋值操作和表达式串联 :如price=100,discount=0.8,calculatePrice(),这个表达式会返回80
4)访问OGNL上下文 (OGNL context)和ActionContext
5)操作集合对象
四、使用OGNL表达式
1)要使用OGNL表达式,首先需要在web.xml中添加ActionContextCleanUp过滤器
<filter>
<filter-name>struts-cleanup</filter-name>
<filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
五、'#'运算符
用途一般有三种:
1)访问非根对象属性,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀 。实际上,#相当于ActionContext. getContext()。
parameters:包含当前HTTP请求参数的Map,#parameters.id[0],等价于request.getParameter("id");
request:包含当前HttpServletRequest的属性的Map,#request.userName,等价于request.getAttribute("username");
session:包含当前HttpSession的属性的Map,#session.userName,等价于session.getAttribute("username");
application:包含当前应用的ServletContext的属性的Map,#application.userName,等价于application.getAttribute("username");
attr:用于按request→session→application顺序访问某个属性,#attr.userName,等价于按顺序在request,session,application范围内读取userName属性,直到找到为止。
2)用于过滤和投影(projecting)集合
如person.{?#this.age>20}
? --获取集合中所有满足选择逻辑的对象(拿sql来做比例就是"select * from xxx where age>20")
^ --获取集合中第一个满足选择逻辑的对象(拿sql来做比例就是"select top(1) from xxx where age>20")
$ --获取集合中最后一个满足选择逻辑的对象
3) 用来构造Map
如#{'foo1':'bar1', 'foo2':'bar2'}
六、'%'运算符
用途是在标识的属性为字符串类型时,计算OGNL表达式的值,如:
<s:url value="test.jsp?age=#userlist['admin']">→test.jsp?#userlist['admin']---可见当字符串与OGNL表达式串起来时,只会被当作字符串对待,并不执行
<s:url value="test.jsp?age=%{#userlist['admin']}">→test.jsp?age=44---使用了该符号,就可以使得OGNL表达式被执行
七、'$'运算符
两个用途:
1)用于在国际化资源文件中,引用OGNL表达式。例如在资源文件中有一个标签fileName,则可以在资源文件中引用:
validation.require=${getText(fileName)} is required
2)在struts2配置文件中引用OGNL表达式,如:
<action name="AddPhoto" class="addPhoto">
<result type="redirect">ListPhotos.action?albumId=${albumId}</result>--但这个albumId是从哪来的呢?
</action>
转自:http://blog.csdn.net/jpr1990/article/details/6929655
发表评论
-
struts2.2.3最小jar
2011-07-18 11:32 1757struts2-core-2.2.3.jar :Struts ... -
转: struts2 标签 2
2011-07-05 11:41 1517一、概要:1、JSP标签技术始于JSP1.12、作用: ... -
转:struts2 标签
2011-07-05 11:39 901struts标签的继承 BodyTagSuppor ... -
struts.xml文件属性配置
2011-06-24 16:32 1199开发中发现struts还有co ... -
FilterDispatcher配置
2011-06-24 16:30 1332配置Struts 2的FilterDispatcher类时,可 ... -
struts.xml配置详解
2011-06-24 16:29 747地址:http://www.cnblogs.com/fmric ... -
struts.properties配置详解
2011-06-24 16:14 924在Struts2的核心包中org\apache\strut ... -
转:Struts 2 下载文件(12)下
2011-06-22 18:54 856(2)同时修改配置文件,增加一个input逻辑视图,修 ... -
转:Struts 2 下载文件(12)中
2011-06-22 18:53 74011.3.2 在Action中指定下载资源 前面的 ... -
转:Struts 2 下载文件(12)上
2011-06-22 18:52 105411.3 Struts 2控制文件下载 文件下载相对于 ... -
转: Struts 2多文件上传(11)下
2011-06-22 18:51 824(3)在配置文件中增加如下配置: ... -
转: Struts 2多文件上传(11) 上
2011-06-22 18:50 83211.2 多个文件上传 很多应用都要求在一个界面中可以 ... -
转: struts 2专用表达式(10)下
2011-06-22 18:49 8718.2 Struts 2的OGNL OGN ... -
转: struts 2专用表达式(10)上
2011-06-22 18:47 772OGNL是Object Graphic Navigat ... -
转: 数据校验功能-AJAX输入校验(9)下
2011-06-22 18:45 11867.4.4 建立JSP视图 建立一个reg-aja ... -
转: 数据校验功能-AJAX输入校验(9)中
2011-06-22 18:43 8617.4.2 建立业务控制器 建立一个简单的业务 ... -
转: 数据校验功能-AJAX输入校验(9)上
2011-06-22 18:41 9007.4 AJAX输入校验 Struts 2框架在使用客 ... -
转: Struts 2的拦截器(8)下
2011-06-22 18:39 834(3)在ch5包内建立一个业务控制器Reg,如代码5. ... -
转: Struts 2的拦截器(8)上
2011-06-22 18:39 721拦截器(Interceptor)是Struts 2的核 ... -
转: 应用Struts 2 的国际化支持特性(7)下
2011-06-22 18:37 769(4) 同样,success.jsp也使用了标签库,如 ...
相关推荐
ognl表达式 ognl表达式 ognl表达式 ognl表达式
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...
struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用
ognl表达式在struts中的用法解析
ognl表达式的用法,叫你熟练掌握ognl 表达式
OGNL表达式详解[定义].pdf
Struts2的标签库及OGNL表达式语言
JS:ognl表达式 JS:ognl表达式 JS:ognl表达式
NULL 博文链接:https://huguifuture.iteye.com/blog/761843
struts2中ognl表达式的用法,详细介绍了ognl表达式与struts2基本标签的结合。
主要介绍了Struts2 OGNL表达式实例详解,相关实例代码,需要的朋友可以参考。
在web开发技术中最常用到的OGNL表达式,对于ognl有点模糊的朋友,试试看思路必定会很清晰,用起来顺手。
struts2标签和OGNL表达式struts2标签和OGNL表达式
ognl表达式的详细教学描述,介绍如何使用ognl表达式和ognl的运行原理
NULL 博文链接:https://chaoyi.iteye.com/blog/2158731
struts2-OGNL表达式测试代码
关于OGNL表达式的使用的整理以及提供的文档说明,ps:文档说明是英文的,可能需要翻译
使用Struts2时,利用ognl表达式在页面获取后台参数值
NULL 博文链接:https://z-one.iteye.com/blog/1584602