blob: 09fb012528214de5dce1fb9b92cb824c7b51474d [file] [log] [blame] [view]
---
layout: default
title: Message Store Interceptor
parent:
title: Interceptors
url: interceptors.html
---
# Message Store Interceptor
An interceptor to store a `ValidationAware` action's messages / errors and field errors into HTTP Session, such that it
will be retrievable at a later stage. This allows the action's message errors and field errors to be available longer
that just the particular HTTP request.
If no session exists, nothing will be stored and can be retrieved later. In other termsthe application is responsible
to open the session.
In the `STORE` mode, the interceptor will store the `ValidationAware` action's message / errors and field errors into
HTTP session.
In the `RETRIEVE` mode, the interceptor will retrieve the stored action's message / errors and field errors and put them
back into the `ValidationAware` action.
In the `AUTOMATIC` mode, the interceptor will always retrieve the stored action's message / errors and field errors
and put them back into the `ValidationAware` action, and after Action execution, if the `Result` is an instance
of `ServletRedirectResult`, the action's message / errors and field errors into automatically be stored in the HTTP session.
The interceptor does nothing in the `NONE` mode, which is the default.
The operation mode could be switched using:
1. Setting the interceptor parameter eg.
```xml
<action name="submitApplication" ...>
<interceptor-ref name="store"/>
<param name="operationMode">STORE</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
....
</action>
```
2. Through request parameter `allowRequestParameterSwitch` must be 'true' which is the default, the request will have
the operation mode in `STORE`
```
http://localhost:8080/context/submitApplication.action?operationMode=STORE
```
## Parameters
- `allowRequestParameterSwitch` - To enable request parameter that could switch the operation mode of this interceptor.
- `requestParameterSwitch` - The request parameter that will indicate what mode this interceptor is in.
- `operationMode` - The operation mode this interceptor should be in (either `STORE`, `RETRIEVE`, `AUTOMATIC`, or `NONE`).
`NONE` being the default.
## Extending the Interceptor
There is no known extensions.
## Examples
```xml
<action name="submitApplication" ....>
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
<result name="input" type="redirectAction">applicationFailed</result>
<result type="dispatcher">applicationSuccess.jsp</result>
</action>
<action name="applicationFailed" ....>
<interceptor-ref name="store">
<param name="operationMode">RETRIEVE</param>
</interceptor-ref>
<result>applicationFailed.jsp</result>
</action>
```
With the example above, `submitApplication.action` will have the action messages / errors / field errors stored in
the HTTP Session. Later when needed, (in this case, when `applicationFailed.action` is fired, it will get the action
messages / errors / field errors stored in the HTTP Session and put them back into the action.