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>
分享到:
相关推荐
struts2-OGNL表达式测试代码
struts2 中 OGNL表达式的使用struts2 中 OGNL表达式的使用
NULL 博文链接:https://z-one.iteye.com/blog/1584602
本案例提供ognl使用详解,测试通过,只需解压放入自己WEB项目中,执行struts_ognl包内java文件即可(未提供jia包,若需要可以联系留言发至邮箱),若测试不好可以联系本人提供指导. Struts 2默认的表达式语言是OGNL...
struts2 OGNL,struts2 表达式语言,Struts2 中OGNL表达式的用法,Struts2 #,表达式语言的好处,Struts2 $,struts2 井号,星号,百分号
Struts2的OGNL表达式语言Object-Graph Navigation Language
NULL 博文链接:https://chaoyi.iteye.com/blog/2158731
struts2中ognl表达式的用法,详细介绍了ognl表达式与struts2基本标签的结合。
struts2标签和OGNL表达式struts2标签和OGNL表达式
Struts2的标签库及OGNL表达式语言
最近的项目开发中使用了struts2的框架,但是好多人都不清楚struts2的标签的具体的用法,要想完全掌握struts2标签的用法,那么你必须先精通了struts2中OGNL的用法。struts2中很多东西其实理解就行,但是惟独OGNL虽然...
Struts 2默认的表达式语言,
本资源适合刚接触Struts和Ognl的小伙伴交流学习,欢迎吐槽。
struts2标签和OGNL表达式.pdf
NULL 博文链接:https://laz383310051.iteye.com/blog/754884
struts2OGNL表达式ActionContext及valuesStack.pdf
主要介绍了Struts2 OGNL表达式实例详解,相关实例代码,需要的朋友可以参考。
NULL 博文链接:https://takeme.iteye.com/blog/1668255
ognl表达式在struts中的用法解析
1.严格过滤 Content-Type 、filename里的内容,严禁ognl表达式相关字段。 2.如果您使用基于Jakarta插件,请升级到Apache Struts 2.3.32或2.5.10.1版本。(强烈推荐) 3.升级到2.3.32所用到的jar包: freemarker-...