EL与OGNL
EL表达式:
>>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application.
>>如果在struts环境中,它除了有在上面的四个作用域的取值功能外,还能从值栈(valuestack)中取值.
>>特点1:${name},name在值栈中的查找顺序是:先从对象栈中取,取到终止,否则,向map中取。
>>特点2:在对象栈的查找顺序是,先从model中找是否有name这个属性,找到终止,否则,找action中是否有name这个全局变量。
>>特点3:${#name},里面的是不带#号的。
>>特点4:如果放在对象栈中的是一个自定义的对象,那么${property}里面可以直接去该对象的属性值,不用这样${object.property}
OGNL表达式:
1:读取从后台传递的值
%{#name}:表示从值栈的map中取值
%{name}:表示从值栈的对象栈中取值
%{#request.name}:表示从request域中取值
2:自己构建数据
a,构建Map<s:iterator var="map"
value="#{'key1':'value1','key2':'value2'}"/>
b,构建List<s:iterator var="list"
value="{'one','two','three'}">
1.区别
用法区别:OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="#xx" /> struts页面中不能单独使用,el可以单独使用 ${sessionScope.username}
页面取值区别:
aaarticlea/png;base64,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" alt="" />
2.ognl讲解
OGNL是Struts 2默认的表达式语言。是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目。
1.#符号的用途一般有三种。
1)访问非根对象属性,例如示例中的#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,
#相当于ActionContext.getContext();;#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute(”msg”) 。
2)用于过滤和投影(projecting)集合,如示例中的persons.{?#this.age>20}。
3)用来构造Map,例如示例中的#{’foo1′:’bar1′, ’foo2′:’bar2′}。
2.%符号 %符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值。如下面的代码所示: 构造Map
<s:set name=”foobar” value=”#{’foo1′:’bar1′, ‘foo2′:’bar2′}” />
<p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p>
<p>不使用%:<s:url value=”#foobar['foo1']” /></p>
<p>使用%:<s:url value=”%{#foobar['foo1']}” /></p>
<s:set name=”foobar” value=”#{’foo1′:’bar1′, ‘foo2′:’bar2′}” />
<p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p>
<p>不使用%:<s:url value=”#foobar['foo1']” /></p>
<p>使用%:<s:url value=”%{#foobar['foo1']}” /></p>
3.$符号
$符号主要有两个方面的用途。 在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。 在Struts 2框架的配置文件中引用OGNL表达式,例如下面的代码片断所示
<validators>
<field name=”intb”>
<field-validator type=”int”>
<param name=”min”>10</param>
<param name=”max”>100</param>
<message>BAction-test校验:数字必须为${min}为${max}之间!</message>
</field-validator>
</field>
</validators>
<validators>
<field name=”intb”>
<field-validator type=”int”>
<param name=”min”>10</param>
<param name=”max”>100</param>
<message>BAction-test校验:数字必须为${min}为${max}之间!</message>
</field-validator>
</field>
</validators>
EL与OGNL的更多相关文章
- 杂谈 Taglib、EL、OGNL
本篇主要是自己对 JavaWeb中 EL.OGNL.Taglib 个人理解. 因为以上内容都是在 JSP 的基础下产生的概念, 首先得说说我眼中的 JSP. 她自由的.奔放的,就像辽阔的大海,跨越任何 ...
- JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
一下纯属个人总结摘抄,总结一起方便查看,解决疑问,有遗漏或错误,还请指出. 1,JSTL标签总结: a).JSTL标签有什么用? JSTL是由JCP(Java Commu ...
- Taglib、EL、OGNL
Taglib.EL.OGNL 阅读目录 1. Taglib(tag library) 标签库 2. EL(Expression Language) 表达式 3. OGNL(Object-Graph N ...
- EL和OGNL表达式的区分
OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="#xx" /> struts页面中不能单独使用,el可以单独使用 ${ses ...
- Java实战之01Struts2-05contextMAP、EL、OGNL
十五.contextMap 1.动作类的生命周期 明确:动作类是多例的,每次动作访问,动作类都会实例化.所以是线程安全的.与Struts1的区别是,struts1的动作类是单例的. 2.请求动作的数据 ...
- struts2中#,$,%的用法以及el,ognl表达式的用法
OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例 取Session中的值 <c:out value="${sessionScope.user.userId}&quo ...
- EL与OGNL以及值栈的理解
这里先添加下在项目遇到的问题: 这两天在做论坛项目的时候,犯了一个错误:将数据放入值栈中,结果jsp页面获取不到. 困扰了许久: 总结如下: (1)每个action对应相应页面的值栈中值的获取,在属于 ...
- JSTL与EL与OGNL
springMVC使用JSTL与EL表达式: spring MV默认的jsp页面的标签就是JSTL,而struts2默认的是OGNL标签. struts2 使用OGNL与EL表达式:OGNL用stru ...
- OGNL表达式与EL表达式
一.OGNL表达式 a)什么是OGNL? OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言, 通过它简单一致的表达式语法.主要功能: ...
随机推荐
- 关于poi的坑
背景故事 今天遇上一个坑,关于poi公式计算结果出错的问题,自己打断点debug了半天,虽然没彻底搞清楚为啥不行,但所幸找到了解决办法. 干货 下面不废话,直接贴干货,原先的公式处理代码如下: fin ...
- 整理好的一些mysql表详细操作
一.创建表的完整语法#语法:create table 库名.表名( 字段名1 类型[(宽度) 约束条件], 字段名2 类型[(宽度) 约束条件], 字段名3 类型[(宽度) 约束条件]);约束条件:是 ...
- 【PHP】PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
php编程中有时候会需要用上排序,在这里简单地整理一下集中sort的区别,方便查询 sort() 函数用于对数组单元从低到高进行排序. rsort() 函数用于对数组单元从高到低进行排序. asort ...
- MySQL 时间戳与日期互相转换
MySQL 时间戳与日期互相转换 1.时间戳转换成日期 函数:FROM_UNIXTIME() ,'%Y年%m月%d日') 结果为:2015年04月15日 2.把日期转换为时间戳,和 FROM_UNIX ...
- Python编写一个程序求2的次方
#!/usr/bin/env python3 #-*- coding:utf-8 -*- #":"冒号后面为对参数注释,"->"为对整个函数注释 def ...
- Python基础函数必学
我们知道圆的面积计算公式为: S = πr2 当我们知道半径r的值时,就可以根据公式计算出面积.假设我们需要计算3个不同大小的圆的面积: r1 = 12.34 r2 = 9.08 r3 = 73.1 ...
- HDOJ 2120 Ice_cream's world I
Ice_cream's world I ice_cream's world is a rich country, it has many fertile lands. Today, the queen ...
- Android Shader渲染器:BitmapShader图片渲染
public class BitmapShader extends Shader BitmapShader, Shader家族的 专门处理图片渲染的 构造方法: public BitmapShade ...
- HDU 4825 Xor Sum (trie树处理异或)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others)Total S ...
- P3402 最长公共子序列(nlogn)
P3402 最长公共子序列 题目背景 DJL为了避免成为一只咸鱼,来找Johann学习怎么求最长公共子序列. 题目描述 经过长时间的摸索和练习,DJL终于学会了怎么求LCS.Johann感觉DJL孺子 ...