Pages Navigation Menu

Coding is much easier than you think

Difference between # , $ and % signs in Struts2

Posted by on Oct 14, 2013 in Struts 2 Tutorial, Struts-2 | 4 comments

Use of #
OGNL is used to refer to objects in the ActionContext as follows:

  • myObject: object in the ValueStack, such as an Action property
  • #myObject: object in the ActionContext but outside of the ValueStack…
    • #myObject: ActionContext object that has been created using the Struts2 data tags with the default action scope (e.g., <s:set name=”data” value=”Some data” />, referenced by<s:property value=”#data” />)
    • #parameters.myObject: request parameter
    • #request.myObject: request-scoped attribute
    • #session.myObject: session-scoped attribute
    • #application.myObject: application-scoped attribute
    • #attr.myObject: attribute in page, request, session, or application scope, searched in that order.

** UPDATE: Struts 2 Complete tutorial now available here.
The scoped map references above (parameters, request, session, and application) can be made one of two ways:

1. #scopeName['myObject']
2. #scopeName.myObject


Use of $

Struts2 OGNL does not make use of the dollar sign. However, it can be used to evaluate JSTL expressions. For example:

Struts2: <s:property value="someProperty" />
(is equivalent to)
JSTL: ${someProperty}


Use of %

% character is used to force OGNL evaluation of an attribute that would normally interpreted as a String literal. For eample,

<s:url id="urlAtt" action="urlTag.action">
<s:a href="%{urlAtt}">Call Action</s:a>

Now <s:a> tag will query the stack for urlAtt value.


Read More