You can obtain the session attributes by asking the ActionContext or implementing SessionAware. Implementing SessionAware is preferred.
Ask the ActionContext
The session attributes are available on the ActionContext instance, which is made available via ThreadLocal.
Map attibutes = ActionContext.getContext().getSession();
Implement SessionAware
Preferred
- Ensure that
servlet-config
Interceptor is included in the Action's stack.- The default stack already includes
servlet-config
.
- The default stack already includes
- Edit the Action so that it implements the SessionAware interface.
- The SessionAware interface expects a
setSession
method. You may wish to include a companiongetSession
method.
- The SessionAware interface expects a
- At runtime, call
getSession
to obtain a Map representing the session attributes. - Any changes made to the session Map are reflected in the actual HttpSessionRequest. You may insert and remove session attributes as needed.
Map parameters = this.getSession();
When the servlet-config
Interceptor sees that an Action implements ParameterAware, it passes a Map of the session attributes to the Action's setParameters
method. Changes made to the Map are reflected in the runtime HttpSessionRequest.
To unit test a SessionAware Action, create your own Map with the pertinent session attributes and call setSession
as part of the test's setUp
method.
@see action-default.xml
@see com.opensymphony.webwork.interceptor.SessionAware
@see com.opensymphony.webwork.interceptor.Servlet Config Interceptor