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讲解

OGNLStruts 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

[html] view plaincopyprint?
  1. <s:set name=”foobar” value=”#{’foo1′:’bar1′, ‘foo2′:’bar2′}” />
  2. <p>The value of key “foo1″ is <s:property value=”#foobar['foo1']” /></p>
  3. <p>不使用%:<s:url value=”#foobar['foo1']” /></p>
  4. <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表达式,例如下面的代码片断所示:

[html] view plaincopyprint?
  1. <validators>
  2. <field name=”intb”>
  3. <field-validator type=”int”>
  4. <param name=”min”>10</param>
  5. <param name=”max”>100</param>
  6. <message>BAction-test校验:数字必须为${min}为${max}之间!</message>
  7. </field-validator>
  8. </field>
  9. </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表达式的区别(用法和页面取值)相关推荐

  1. java el ognl_el表达式跟ognl表达式的区别

    EL表达式: >>单纯在jsp页面中出现,是在四个作用域中取值,page,request,session,application. >>如果在struts环境中,它除了有在上面 ...

  2. java el ognl_EL和OGNL表达式的区分

    OGNL是通常要结合Struts 2的标志一起使用,如 struts页面中不能单独使用,el可以单独使用 ${sessionScope.username} 页面取值区别: 名称 servlet ogn ...

  3. EL表达式判断Map是否为空和map的取值

    EL表达式判断Map是否为空和map的取值 1.  Map<String, Object> fieldMap <c:if test="${fieldMap['realnam ...

  4. java ognl表达式_java -------ognl表达式入门

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ----------------------------------------------------------------------------- ...

  5. CSS定位布局display/float/position属性之间的关系/区别和如何使用取值行为机制

    float: left|right; 可以自动排列自动折行, 但需要clear来配合清除浮动; display: inline-block; 有些时候可以替代float实现相同的效果. positio ...

  6. ibatis中resultMap和resultClass的区别 以及parameterClass 的取值

    resultMap和resultClass指的是在 select查询中的返回数据类型 resultMap取值 一.resultMap必须和我们之前定义<resultMap id="ac ...

  7. EL表达式 与ONGL表达式

    在SSH商城学习中我们在使用struts2,大大简化了我们对视图页面的编写,struts的标签.页面导航.模板都提供了极佳的扩展性,实现了更好的代码复用.当页面显示复杂时还可以在页面中自定义组件,满足 ...

  8. struts2教程(9)--OGNL表达式使用

    OGNL表示式使用和值栈 一.介绍 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目. Struts2框架使用OGNL作为默认的 ...

  9. OGNL表达式的基本用法

    OGNL表达式的基本用法 借助 s:property标签输出内容到浏览器 s:property的作用 写法: <%--导入标签库--%> <%@ taglib uri="/ ...

最新文章

  1. python窗口显示图片imread() imshow()_Python-OpenCV学习之imread,imshow
  2. 隐藏nginx 版本号信息
  3. volatile学习(可见性,不保证原子性,禁止指令重排(双端检索机制))
  4. 相信很多人心里都有着一个自媒体的梦想
  5. MVC中的cshtml与ASPX的区别
  6. 轻松解决电脑死机故障攻略_软件
  7. 机械工程matlab课程设计,浅论MATLAB在机械课程设计中的应用方法和技巧
  8. 一个关于偷书贼的故事
  9. 限制性立方样条(Restricted Cubic Spline)
  10. 小企业仓库管理软件设计开发
  11. FL studio 20简易入门教程 -- 第九篇 -- 完整编曲流程
  12. 如何在matlab中表示e,Matlab中表达e的操作方法介绍
  13. Linux之V4L2驱动框架
  14. 输入时刻time,计算出在time和time+1之间,时针和分针重合的时刻
  15. Xshell输入特别卡顿
  16. 微信公众号运营错误的四个方式
  17. m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计
  18. 为chrome书签栏中,没有默认图标的网站添加图标
  19. 家装分期系统-金融科技+房屋装修
  20. 在windows 10 下安装 ricoh sp 325打印机

热门文章

  1. 供销大集有潜力吗_社区团购遭点名批评,互联网巨头真的只是惦记那几捆白菜吗?| 吴坚浙商频道...
  2. 2.4g 无线键鼠对码软件_RK526无线键鼠套装开箱体验
  3. Machine Learning Algorithms Study Notes--Supervised Learning
  4. python中用箱线图分析异常值_[宜配屋]听图阁
  5. 决策树(十)--GBDT及OpenCV源码分析
  6. TypeError: descriptor '__init__' requires a 'super' object but received a 'str'
  7. 前端 domparser未定义怎么解决_开源|wwto:小程序跨端迁移解决方案——微信转其他小程序...
  8. C语言——指针篇(二)指针和数组之内存分配和初始化
  9. Hive复杂数据类型之array
  10. 设计模式(六)原型模式