struts2 OGNL 表达式
一、Struts 2支持以下几种表达式语言:
OGNL(Object-Graph Navigation Language),可以方便地操作对象属性的开源表达式语言;
JSTL(JSP Standard Tag Library),JSP 2.0集成的标准的表达式语言;
Groovy,基于Java平台的动态语言,它具有时下比较流行的动态语言(如Python、Ruby和Smarttalk等)的一些起特性;
Velocity,严格来说不是表达式语言,它是一种基于Java的模板匹配引擎,具说其性能要比JSP好。
Struts 2默认的表达式语言是OGNL,
二、它相对其它表达式语言具有下面几大优势:
- 支持对象方法调用,如xxx.doSomeSpecial();
- 支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME;
- 支持赋值操作和表达式串联,如price=100, discount=0.8, calculatePrice(),这个表达式会返回80;
- 访问OGNL上下文(OGNL context)和ActionContext;
- 操作集合对象。
三、# 的使用
访问OGNL上下文和Action上下文
| 名称 | 作用 | 例子 |
| #parameters | 包含当前HTTP请求参数 | #parameters.id |
| #request | 包含当前HttpServletRequest属性 | #request.userName |
| #session | 包含当前HttpSession的属性 | #session.userName |
| #application | 包含当前应用的ServletContext的属性 | #application.userName |
| #attr | 按request > session > application顺序访问其属性 | #attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为止 |
用于过滤和投影集合
<s:iterator value="books.{?#this.price > 35}">
</s:iterator>
构造Map
<s:set name="cities" value="#{'beijing':'北京','shanghai':'上海'}"/>
OGNL上下文中只有一个根对象,而Struts2为我们定义了很多对象,分别是"ValueStack","Parameters","Session","Request","Application","Attr"。
其中"ValueStack"被设置为上下文的根对象。
访问非根对象必须加"#"
"%{}"的含义是告诉标签的处理类,它包含的字符串按照OGNL的表达式处理。若处理类的属性值默认为OGNL表达式处理,则忽略"%{}",所以建议使用OGNL时加上"%{}"
OGNL必须通过getters方法进行导航
struts2 OGNL 表达式的更多相关文章
- struts2 OGNL表达式
一.OGNL OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对 ...
- struts2 ognl表达式访问值栈
1:简单的说,值栈是对应每一个请求对象的轻量级的数据存储中心,在这里统一管理着数据,供Action.Result.Interceptor等Struts2的其他部分使用,这样数据被集中管理起来而不凌乱. ...
- Struts2 OGNL表达式、ValueStack
OGNL简介 OGNL,即Object-Graph Navigation Language,对象视图导航语言,是一种数据访问语言,比EL表达式更加强大: EL只能从11个内置对象中取值,且只能获取属性 ...
- Struts2的OGNL表达式语言
一.OGNL的概念 OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者 ...
- struts2学习笔记--OGNL表达式1
struts2标签库主要使用的是OGNL语言,类似于El表达式,但是强大得多,它是一种操作对象属性的表达式语言,OGNL有自己的优点: 能够访问对象的方法,如list.size(); 能够访问静态属性 ...
- OGNL表达式struts2标签“%,#,$”
一.什么是OGNL,有什么特点? OGNL(Object-Graph Navigation Language),大概可以理解为:对象图形化导航语言.是一种可以方便地操作对象属性的开源表达式语言.OGN ...
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- Struts2的标签库(二)——OGNL表达式
Struts2的标签库(二) --OGNL表达式 1.Struts2中的OGNL表达式增加了ValueStack的支持. 注:ValueStack--实际上是一个容器对象,该对象在启动Struts2框 ...
- struts2视频学习笔记 28(OGNL表达式)
课时28 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts 2框架使用OGNL作为默认的表达式语 ...
随机推荐
- FutureTask源码解读
import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.ut ...
- shell抓取
#!/bin/sh ` configDir="$dir/config" ipport="$configDir/ip_port" url="http:/ ...
- Objective-C 入门(给新人的)
http://www.hengxinsoft.com/2010/12/objective-c-%E5%85%A5%E9%97%A8%EF%BC%88%E7%BB%99%E6%96%B0%E4%BA%B ...
- Data guard RAC配置【二】
2. 利用duplicate配置容灾端 1.配置容灾端oracle用户的环境变量,这里以192.166.1.61为例. export ORACLE_BASE=/opt/oracle export OR ...
- hadoop2.0 eclipse 源码编译
在eclipse下编译hadoop2.0源码 http://www.cnblogs.com/meibenjin/archive/2013/07/05/3172889.html hadoop cdh4编 ...
- Candies(差分约束)
http://poj.org/problem?id=3159 题意: flymouse是幼稚园班上的班长,一天老师给小朋友们买了一堆的糖果,由flymouse来分发,在班上,flymouse和snoo ...
- maven错误解决:编码GBK的不可映射字符
直接将项目改为UTF-8编码,无效! 要通过修改pom.xml文件,告诉maven这个项目使用UTF-8来编译. 方案一: 在pom.xml的/project/build/plugins/下的编译插件 ...
- codeforce ---A. Milking cows
A. Milking cows time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- rspec学习01
1.安装rspec 2.基本构造 rspec用关键字describe和it,所以我们可以象正常会话一样去表达一个想法. describe方法创建了一个用例组,在describe所在的代码块里,你可以用 ...
- DD-WRT相关资源
版本网站下载:Other Downloads,进入betas->2014 FTP下载:如ftp://ftp.dd-wrt.com/betas/2014/06-23-2014-r24461/ Re ...