标签:  OGNL  表达式  2009-05-16 13:18
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>

OGNL表达式中的#、%和$相关推荐

  1. 关于OGNL表达式中的%,$,#

    OGNL表达式非常强大-其中#.%.$这三个符号在OGNL表达式中经常出现,而这三种符号也是开发者不容易掌握和理解的部分,要认真区分.   1.#符号的用途一般有三种. 1)访问非根对象属性,例如示例 ...

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

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

  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. 快速 开发平台 架构_快速介绍清洁架构
  2. linux resource
  3. linux阿帕奇日志文件,Linux下apache日志文件设置
  4. 搜索引擎设计实用教程(2)-以百度为例
  5. AngularDart 现已全面采用 Dart 开发
  6. linux基础知识——环境变量
  7. 递归计算二叉树的高度_如何使用递归方法计算二叉树的高度
  8. 沙利文:2019Q4中国公有云市场份额:阿里云、腾讯云、华为云位列前三
  9. Drawable和Bitmap的区别
  10. 基于STEP7 V5.xWinCC V7.x快速开发项目
  11. JavaEE之Filter过滤器、登录状态验证、敏感词汇过滤
  12. 南京师范大学地图学与地理信息系统专业《地理信息系统原理》研究生(硕士)期末试卷
  13. Rust语言编程实例100题-036
  14. mediawiki内嵌php,Mediawiki的模板
  15. kubernetes之容器生命周期管理
  16. 收集欢太积分可参与丰富的用户活动,还有丰厚的福利可以领取~
  17. R语言-查看加载包、卸除加载包及安装包与卸载包
  18. AWS 容器三大新品:K8s 发行版,免费镜像库和 “Game Changer”AWS Proton
  19. iso sqlserver2012sp1_SQL Server 2008 R2升级到SQL Server 2012 SP1
  20. 【mysql 8.023 解压版安装】

热门文章

  1. 计算机教师个人总结及自评,教师个人自评的工作总结
  2. python画画用哪库好_Python我要学画画-turtle库
  3. [Pandas] 相同分组条件下的特定列除第一行以外的值为空
  4. Photoshop把杂乱的人像图片简化处理
  5. Catch That Cow(抓住那头牛C++)
  6. 开源系统搭建私有云盘,育网校园云盘系统
  7. Oracle之数据库升级——升级补丁修复概述
  8. 为什么我的Android Studio没有Android SDK选项
  9. spring.profiles.active=@profiles.active@ 的使用
  10. 程序员表白神器c语言,程序员表白神器