el表达式跟ognl表达式的区别(用法和页面取值)
1.区别
用法区别:OGNL是通常要结合Struts 2的标志一起使用,如<s:property value="#xx" /> struts页面中不能单独使用,el可以单独使用 ${sessionScope.username}
页面取值区别:
名称 |
servlet |
ognl el |
parameters |
request.getParameter("username") |
#username ${username} |
request |
request.getAttribute("userName") |
#request.userName ${requestScope.username} |
session |
session.getAttribute("userName") |
#session.userName ${sessionScope.username} |
application |
application.getAttribute("userName") |
#application.userName ${applicationScope.username} |
attr |
用于按request > session > application顺序访问其属性(attribute) |
#attr.userName相当于按顺序在以上三个范围(scope)内读取userName属性,直到找到为 |
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>
待续
转载于:https://www.cnblogs.com/4wei/archive/2012/12/23/2847274.html
el表达式跟ognl表达式的区别(用法和页面取值)相关推荐
- java el ognl_el表达式跟ognl表达式的区别
EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application. >>如果在struts环境中,它除了有在上面 ...
- java el ognl_EL和OGNL表达式的区分
OGNL是通常要结合Struts 2的标志一起使用,如 struts页面中不能单独使用,el可以单独使用 ${sessionScope.username} 页面取值区别: 名称 servlet ogn ...
- EL表达式判断Map是否为空和map的取值
EL表达式判断Map是否为空和map的取值 1. Map<String, Object> fieldMap <c:if test="${fieldMap['realnam ...
- java ognl表达式_java -------ognl表达式入门
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ----------------------------------------------------------------------------- ...
- CSS定位布局display/float/position属性之间的关系/区别和如何使用取值行为机制
float: left|right; 可以自动排列自动折行, 但需要clear来配合清除浮动; display: inline-block; 有些时候可以替代float实现相同的效果. positio ...
- ibatis中resultMap和resultClass的区别 以及parameterClass 的取值
resultMap和resultClass指的是在 select查询中的返回数据类型 resultMap取值 一.resultMap必须和我们之前定义<resultMap id="ac ...
- EL表达式 与ONGL表达式
在SSH商城学习中我们在使用struts2,大大简化了我们对视图页面的编写,struts的标签.页面导航.模板都提供了极佳的扩展性,实现了更好的代码复用.当页面显示复杂时还可以在页面中自定义组件,满足 ...
- struts2教程(9)--OGNL表达式使用
OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...
- OGNL表达式的基本用法
OGNL表达式的基本用法 借助 s:property标签输出内容到浏览器 s:property的作用 写法: <%--导入标签库--%> <%@ taglib uri="/ ...
最新文章
- python窗口显示图片imread() imshow()_Python-OpenCV学习之imread,imshow
- 隐藏nginx 版本号信息
- volatile学习(可见性,不保证原子性,禁止指令重排(双端检索机制))
- 相信很多人心里都有着一个自媒体的梦想
- MVC中的cshtml与ASPX的区别
- 轻松解决电脑死机故障攻略_软件
- 机械工程matlab课程设计,浅论MATLAB在机械课程设计中的应用方法和技巧
- 一个关于偷书贼的故事
- 限制性立方样条(Restricted Cubic Spline)
- 小企业仓库管理软件设计开发
- FL studio 20简易入门教程 -- 第九篇 -- 完整编曲流程
- 如何在matlab中表示e,Matlab中表达e的操作方法介绍
- Linux之V4L2驱动框架
- 输入时刻time,计算出在time和time+1之间,时针和分针重合的时刻
- Xshell输入特别卡顿
- 微信公众号运营错误的四个方式
- m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计
- 为chrome书签栏中,没有默认图标的网站添加图标
- 家装分期系统-金融科技+房屋装修
- 在windows 10 下安装 ricoh sp 325打印机
热门文章
- 供销大集有潜力吗_社区团购遭点名批评,互联网巨头真的只是惦记那几捆白菜吗?| 吴坚浙商频道...
- 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
- Machine Learning Algorithms Study Notes--Supervised Learning
- python中用箱线图分析异常值_[宜配屋]听图阁
- 决策树(十)--GBDT及OpenCV源码分析
- TypeError: descriptor '__init__' requires a 'super' object but received a 'str'
- 前端 domparser未定义怎么解决_开源|wwto:小程序跨端迁移解决方案——微信转其他小程序...
- C语言——指针篇(二)指针和数组之内存分配和初始化
- Hive复杂数据类型之array
- 设计模式(六)原型模式