(1)访问非根对象属性,例如#session.msg表达式,由于Struts 2中值栈被视为根对象,所以访问其他非根对象时,需要加#前缀。实际上,#相当于ActionContext. getContext();#session.msg表达式相当于ActionContext.getContext().getSession(). getAttribute("msg") 。
(2) 用于过滤和投影(projecting)集合,如persons.{?#this.age>25},persons.{?#this.name=='pla1'}.{age}[0]。
(3) 用来构造Map,例如示例中的#{'foo1':'bar1', 'foo2':'bar2'}。
%符号的用途是在标志的属性为字符串类型时,计算OGNL表达式的值,这个类似js中的eval,很暴力。
$符号主要有两个方面的用途。
(1) 在国际化资源文件中,引用OGNL表达式,例如国际化资源文件中的代码:reg.agerange=国际化资源信息:年龄必须在${min}同${max}之间。
(2) 在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>
struts2中怎样来应用OGNL?
在struts2中,valuestack就是根对象,在struts2的任何流程中,valueStack中的最顶层对象一定是action对象。
有时候会用到%{#person.id}这种符号的使用:
原因是:struts2的<s:property/>标签可以自动把其中的值当做ognl表达式来处理,其它的一些标签如:<s:a href="">,href中的值就不会将其中的字符串当做ognl表达式来处理,他只会当做普通的字符串来处理,如果我们想让其当做ognl表达式来处理时,需要用%{},包裹起来。<s: a href="abc.action?id=%{#person.id}">
struts2中的标签中哪些会是自动当做ognl表达式来处理的呢?
可以有如下的方法来检验:在<s:property value="%{name}">,可以在value上面用%{}包裹起来,如果值没有变化,就证明是当做ognl来处理的。
总结:关于struts2标签库属性值的%与#的关系:
如果标签的属性值是ognl表达式,那么无需加上%{}
如果标签的属性值字符串类型,那么在字符串中凡是出现的%{}都会解析成ognl表达式,解析完毕之后再与其他的字符串进行拼接构造出最后的字符串值。
我们可以在所有的属性值上加%{},这样如果该属性值是ognl表达式,那么标签处理类就会将%{}忽略掉。(struts2中所有的标签都可以处理ognl表达式,不行的就加%{}嘛)
相关推荐
OGNL中的#、%和$符号用法说明
OGNL表达式中的#、%和$.txt12312313213212312332212132
NULL 博文链接:https://hezhou-0521.iteye.com/blog/777463
赠送jar包:ognl-3.2.21.jar; 赠送原API文档:ognl-3.2.21-javadoc.jar; 赠送源代码:ognl-3.2.21-sources.jar; 赠送Maven依赖信息文件:ognl-3.2.21.pom; 包含翻译后的API文档:ognl-3.2.21-javadoc-API文档-...
赠送jar包:ognl-3.1.12.jar; 赠送原API文档:ognl-3.1.12-javadoc.jar; 赠送源代码:ognl-3.1.12-sources.jar; 赠送Maven依赖信息文件:ognl-3.1.12.pom; 包含翻译后的API文档:ognl-3.1.12-javadoc-API文档-...
struts符号的$,%,#使用,教你怎样使用struts中OGNL表达式。
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. ...主要是#、%和$这三个符号的使用;
JS:ognl表达式 JS:ognl表达式 JS:ognl表达式
是关于OGNL语言的中文资料,要的请下载
struts2 OGNL之<s:property>标签访问值栈(value stack)用法,希望能对大家有帮助
赠送jar包:ognl-3.2.21.jar; 赠送原API文档:ognl-3.2.21-javadoc.jar; 赠送源代码:ognl-3.2.21-sources.jar; 赠送Maven依赖信息文件:ognl-3.2.21.pom; 包含翻译后的API文档:ognl-3.2.21-javadoc-API文档-...
struts2 OGNL,struts2 表达式语言,Struts2 中OGNL表达式的用法,Struts2 #,表达式语言的好处,Struts2 $,struts2 井号,星号,百分号
Ognl的jar包和源码包,含3个版本:ognl1、ognl2、ognl3
OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科OGNL百度百科
ognl表达式 ognl表达式 ognl表达式 ognl表达式
赠送jar包:ognl-3.1.12.jar; 赠送原API文档:ognl-3.1.12-javadoc.jar; 赠送源代码:ognl-3.1.12-sources.jar; 赠送Maven依赖信息文件:ognl-3.1.12.pom; 包含翻译后的API文档:ognl-3.1.12-javadoc-API文档-...
struts ognl 的常用用法大全.“#”主要有三种用途:
大家经常遇到的问题是#、%和$这三个符号的使用。下面我想通过例子讲述这个问题: 首先新建名为Struts2_OGNL的Web工程,配置开发环境。之前很多朋友在使用Struts 2的过程中都遇到乱码问题。当然乱码问题由来已久,...
3. 语法 4. 表达式 常数 属性引用 索引 数组(Array)与列表(List)的索引 JavaBean中的索引属性(Indexed Properties) OGNL特有的对象索引属性(Object Indexed Properties) 调用方法 变量引用 带括号的表达式...
开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12开发工具 ognl-3.1.12...