Использование # (знак фунта)
OGNL используется для ссылки на объекты в ActionContext следующим образом:
objectName
: объект в ValueStack (объект по умолчанию / корневой в контексте OGNL), такой как свойство Action
#objectName
: объект в ActionContext, но за пределами ValueStack, в частности ...
#objectName
: объект ActionContext, созданный с использованием тегов данных Struts2 с областью действия по умолчанию (например, <s:set name="foo" value="'Testing'" />
, на которую ссылается <s:property value="#foo" />
)
#parameters.objectName
: параметр запроса
#request.objectName
: атрибут области запроса
#session.objectName
: атрибут области сеанса
#application.objectName
: атрибут области приложения
#attr.objectName
: атрибут в области страницы, запроса, сеанса или приложения (ищется в указанном порядке)
Приведенные выше ссылки на карту области действия (параметры, запрос, сеанс и приложение) можно сделать одним из двух способов:
#scopeName.objectName
или
#scopeName['objectName']
Использование% (знак процента)
%{ OGNL expression }
используется для принудительной оценки атрибута 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>