OGNL主要有三个符号:#,%,$
"#"声明OGNL表达式
#是Struts2标签中最常用的符号。#有三种用途
(1)能够访问OGNL上下文与ActionContext资源,相当于ActionContext.个体Context()。常用的"#"属性如下
(2)用于过滤或筛选集合,例如:books.{?#this.price<20},表示所有的price<20的书。
(3)构造Map,如#{'fool':"bar1", 'fool2':"bar2"}
"%"显式声明OGNL表达式
%用于表示某字符串为一个OGNL表达式。某些标签中既能接受字符串,又能接受OGNL表达式。这时候,标有%的被当做OGNL表达式并被执行,没有标有%的被当做普通的字符串,例如
<struts:label label="#request.account" /><!-- 参数作为普通字符串 -->
<struts:label label="%{#request.account}" /><!-- 用%表示参数为OGNL -->
第一行代码会输出字符串request.account,第二行代码会输出request的account属性值
"$”在资源文件中引用OGNL表达式
$主要用于在资源国际化文件中或者struts.zml中引用OGNL表达式,例如:
Resources.properties:
validation.require=${getText(fileName)} is required
struts.xml::
<action name="AddPhoto" class="addPhoto">
<result type="redirect">ListPhotos.action?albumId=${album|Id}</result>
</action>