OGNL表达式非常强大~其中#、%、$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分。
 
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′}” />

The value of key “foo1″ is <s:property value=”#foobar['foo1']” />

不使用%:<s:url value=”#foobar['foo1']” />

使用%:<s:url value=”%{#foobar['foo1']}” />

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>

转载于:https://www.cnblogs.com/wshwenwen/archive/2010/05/14/1735522.html

关于OGNL表达式中的%,$,#相关推荐

  1. #、%和$符号在OGNL表达式中的作用

    #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里笔者简单介绍它们的相应用途. 1.#符号的用途一般有三种.    1)访问非根对象属性,例如示例中的#se ...

  2. OGNL表达式中的#、%和$

    标签:  OGNL  表达式  2009-05-16 13:18 OGNL表达式非常强大-其中#.%.$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分. ...

  3. ognl表达式中%{}的作用

    在struts2字符串中用%{}指出,其内部是一个ognl表达式,需要解析. 如<s:textfield lable="user" name="user" ...

  4. Struts2中的OGNL表达式的详解

    首先了解下OGNL的概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的 ...

  5. Struts2漏洞分析之Ognl表达式特性引发的新思路

    摘要 在Ognl表达式中,会将被括号"()"包含的变量内容当做Ognl表达式执行.Ognl表达式的这一特性,引发出一种新的攻击思路.通过将恶意代码存储到变量中,然后在调用Ognl表 ...

  6. Struts标签和OGNL表达式

    Struts标签和OGNL表达式 1.OGNL通过索引访问ValueStack中的对象. [0].name [1].name 上面使用的索引的方式并不是直接取得指定元素,而是从指定索引开始向下搜索. ...

  7. Struts 2的OGNL表达式

    来源:http://www.24xuexi.com/w/2011-04-26/88911.html Struts 2的OGNL表达式 标准的OGNL会设定一个根对象(root对象).假设使用标准OGN ...

  8. OGNL表达式的基本语法和用法

    一.OGNL中的#.%和$符号 #.%和$符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分.在这里我们简单介绍它们的相应用途. 1.#符号的三种用法 1)访问非根对象属性, ...

  9. OGNL表达式原理及使用

    OGNL :object graph navigation language,对象图形导航语言,一种表达式语言. 为什么出现: 在我们所熟悉的mvc框架中,数据是在各层之间进行流转使用的.       ...

最新文章

  1. mongo 多条件筛选_如何制作提交按钮,实现多条件筛选
  2. Qt Creator Qt Quick用户界面表单ui-forms
  3. js 获取url参数(QueryString)
  4. Lyft Level 5 Challenge 2018 - Elimination Round翻车记
  5. JAVA 取得当前目录的路径/Servlet/class/文件路径/web路径/url地址
  6. 如何在yml中加上git用户名和密码的验证_使用Apollo升级一下yml文件管理和发布
  7. 详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点
  8. python控制浏览器最小化_如何在selenium webdriver 3中最小化浏览器窗口
  9. loadrunner11下载
  10. CVE-2018-18311 阿里云漏洞修复 RHSA-2019:0109-Important: perl secur
  11. veu 中 nprogress 的 使用方法
  12. 鸿蒙系统支持列表,华为鸿蒙系统支持的手机型号一览【最新】
  13. android+屏幕色彩度,对比度/色阶/色彩 屏幕显示对比_索尼 Xperia Z2_手机Android频道-中关村在线...
  14. EfficientNet网络详解
  15. 推荐个免费ppt模板下载网站
  16. 使用C++,用四阶Runge-Kutta的方法来求解一阶常微分方程
  17. 如果定制开发一款小程序
  18. java 304_304 Not Modified状态码
  19. 开发Unity3D空战类插件 战机游戏模板
  20. Opencv项目实战:19 手势控制鼠标

热门文章

  1. 2022-2028年中国氯磺化聚乙烯橡胶行业市场深度分析及未来趋势预测报告
  2. Python多线程(3)——Queue模块
  3. LeetCode简单题之增量元素之间的最大差值
  4. 华为公有云架构解决方案
  5. 摄像头Camera标定Calibration原理Theory
  6. 2021年大数据Flink(三):​​​​​​​Flink安装部署 Local本地模式
  7. zookeeper原理特点案例
  8. python 判断字典是否包含某个key,以及对应的value 值
  9. Android 属性动画(Property Animation) ValueAnimator 的介绍
  10. The form contains the following errors