使用#(井号)
OGNL用于在ActionContext中引用对象,如下所示:
objectName
:ValueStack中的对象(OGNL上下文中的默认/根对象),例如Action属性#objectName
:对象在ActionContext中,但在ValueStack之外,特别是…#objectName
:已使用Struts2数据标签以及默认操作范围(例如,<s:set name="foo" value="'Testing'" />
通过引用的<s:property value="#foo" />
)创建的ActionContext对象#parameters.objectName
:请求参数#request.objectName
:请求范围的属性#session.objectName
:会话范围的属性#application.objectName
:应用程序范围的属性#attr.objectName
:页面,请求,会话或应用程序范围中的属性(按此顺序搜索)
可以通过以下两种方式之一使上面的作用域映射引用(参数,请求,会话和应用程序):
#scopeName.objectName
要么#scopeName['objectName']
使用%(百分号)
%{ OGNL expression } 用于强制对通常会解释为String文字的属性进行OGNL评估。例:
<s:property value="myProperty" default="%{myDynamicDefaultValue}" />@的使用(在符号处)
@符号用于引用静态属性和方法。请注意,您可能需要在Struts2属性中启用它:
struts.ognl.allowStaticMethodAccess=true
例子:
@my.package.ClassName@MY_STATIC_PROPERTY@my.package.ClassName@myStaticMethod
$的使用(美元符号)
Struts2 OGNL没有特别使用美元符号。但是,它可以用于评估正常的JSTL表达式。例如:
Struts2 :(
<h1><s:property value="#pageTitle" /></h1>
相当于…)
JSTL:
<h1>${pageTitle}</h1>


