博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#、%和$符号在OGNL表达式中的作用
阅读量:5951 次
发布时间:2019-06-19

本文共 1067 字,大约阅读时间需要 3 分钟。

#、%和$符号在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':'bar','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>

转载于:https://www.cnblogs.com/writeLessDoMore/p/6788963.html

你可能感兴趣的文章
urllib模块使用笔记
查看>>
mysql 连接慢的问题(超过了1秒)
查看>>
1297. [SCOI2009]迷路【矩阵乘法】
查看>>
Linux嵌入式GDB调试环境搭建
查看>>
安全性测试要点转摘
查看>>
java分析jvm常用指令
查看>>
【Linux】Linux 在线安装yum
查看>>
oracle 管理操作 (转)
查看>>
DEV 等待窗口
查看>>
实验03博客园总结
查看>>
laravel captcha 验证码制作
查看>>
VS2017发布微服务到docker
查看>>
lombok
查看>>
Dev-FAT-UAT-PRO
查看>>
Maven, IntellJ Idea 配置注意点
查看>>
Android开发学习总结(五)——Android应用目录结构分析(转)
查看>>
观察者模式
查看>>
python操作excel (openpyxl)
查看>>
[PHP]PHP rpc框架hprose测试
查看>>
网络安全系列之十八 MySQL基本操作(PHP注入基础)
查看>>