org.apache.struts2.interceptor
Class MessageStoreInterceptor

java.lang.Object
  extended by org.apache.struts2.interceptor.MessageStoreInterceptor
All Implemented Interfaces:
Interceptor, Serializable

public class MessageStoreInterceptor
extends Object
implements Interceptor

An interceptor to store a ValidationAware action's messages / errors and field errors into HTTP Session, such that it will be retrieveable at a later stage. This allows the action's message / errors and field errors to be available longer that just the particular HTTP request.

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 iterceptor parameter eg.

   <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
 

The following method could be overriden :-

 

 <action name="submitApplication" ....>
    <interceptor-ref name="store">
      <param name="operationMode">STORE</param>
    </interceptor-ref>
    <interceptor-ref name="defaultStack" />
    <result name="input" type="redirect">applicationFailed.action</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.

Version:
$Date: 2009-04-26 22:09:35 -0400 (Sun, 26 Apr 2009) $ $Id: MessageStoreInterceptor.java 768855 2009-04-27 02:09:35Z wesw $
See Also:
Serialized Form

Field Summary
static String actionErrorsSessionKey
           
static String actionMessagesSessionKey
           
private  boolean allowRequestParameterSwitch
           
static String AUTOMATIC_MODE
           
static String fieldErrorsSessionKey
           
private static Logger LOG
           
static String NONE
           
private  String operationMode
           
private  String requestParameterSwitch
           
static String RETRIEVE_MODE
           
private static long serialVersionUID
           
static String STORE_MODE
           
 
Constructor Summary
MessageStoreInterceptor()
           
 
Method Summary
protected  void after(ActionInvocation invocation, String result)
          Handle the storing of field errors / action messages / field errors, which is done after action invocation, and the operationMode is in 'STORE'.
protected  void before(ActionInvocation invocation)
          Handle the retrieving of field errors / action messages / field errors, which is done before action invocation, and the operationMode is 'RETRIEVE'.
 void destroy()
          Called to let an interceptor clean up any resources it has allocated.
 boolean getAllowRequestParameterSwitch()
           
 String getOperationModel()
           
protected  String getRequestOperationMode(ActionInvocation invocation)
          Get the operationMode through request paramter, if allowRequestParameterSwitch is 'true', else it simply returns 'NONE', meaning its neither in the 'STORE_MODE' nor 'RETRIEVE_MODE'.
 String getRequestParameterSwitch()
           
 void init()
          Called after an interceptor is created, but before any requests are processed using intercept , giving the Interceptor a chance to initialize any needed resources.
 String intercept(ActionInvocation invocation)
          Allows the Interceptor to do some processing on the request before and/or after the rest of the processing of the request by the ActionInvocation or to short-circuit the processing and just return a String return code.
protected  Collection mergeCollection(Collection col1, Collection col2)
          Merge col1 and col2 and return the composite Collection.
protected  Map mergeMap(Map map1, Map map2)
          Merge map1 and map2 and return the composite Map
 void setAllowRequestParameterSwitch(boolean allowRequestParameterSwitch)
           
 void setOperationMode(String operationMode)
           
 void setRequestParameterSwitch(String requestParameterSwitch)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values

LOG

private static final Logger LOG

AUTOMATIC_MODE

public static final String AUTOMATIC_MODE
See Also:
Constant Field Values

STORE_MODE

public static final String STORE_MODE
See Also:
Constant Field Values

RETRIEVE_MODE

public static final String RETRIEVE_MODE
See Also:
Constant Field Values

NONE

public static final String NONE
See Also:
Constant Field Values

allowRequestParameterSwitch

private boolean allowRequestParameterSwitch

requestParameterSwitch

private String requestParameterSwitch

operationMode

private String operationMode

fieldErrorsSessionKey

public static final String fieldErrorsSessionKey
See Also:
Constant Field Values

actionErrorsSessionKey

public static final String actionErrorsSessionKey
See Also:
Constant Field Values

actionMessagesSessionKey

public static final String actionMessagesSessionKey
See Also:
Constant Field Values
Constructor Detail

MessageStoreInterceptor

public MessageStoreInterceptor()
Method Detail

setAllowRequestParameterSwitch

public void setAllowRequestParameterSwitch(boolean allowRequestParameterSwitch)

getAllowRequestParameterSwitch

public boolean getAllowRequestParameterSwitch()

setRequestParameterSwitch

public void setRequestParameterSwitch(String requestParameterSwitch)

getRequestParameterSwitch

public String getRequestParameterSwitch()

setOperationMode

public void setOperationMode(String operationMode)

getOperationModel

public String getOperationModel()

destroy

public void destroy()
Description copied from interface: Interceptor
Called to let an interceptor clean up any resources it has allocated.

Specified by:
destroy in interface Interceptor

init

public void init()
Description copied from interface: Interceptor
Called after an interceptor is created, but before any requests are processed using intercept , giving the Interceptor a chance to initialize any needed resources.

Specified by:
init in interface Interceptor

intercept

public String intercept(ActionInvocation invocation)
                 throws Exception
Description copied from interface: Interceptor
Allows the Interceptor to do some processing on the request before and/or after the rest of the processing of the request by the ActionInvocation or to short-circuit the processing and just return a String return code.

Specified by:
intercept in interface Interceptor
Parameters:
invocation - the action invocation
Returns:
the return code, either returned from ActionInvocation.invoke(), or from the interceptor itself.
Throws:
Exception - any system-level error, as defined in Action.execute().

before

protected void before(ActionInvocation invocation)
               throws Exception
Handle the retrieving of field errors / action messages / field errors, which is done before action invocation, and the operationMode is 'RETRIEVE'.

Parameters:
invocation -
Throws:
Exception

after

protected void after(ActionInvocation invocation,
                     String result)
              throws Exception
Handle the storing of field errors / action messages / field errors, which is done after action invocation, and the operationMode is in 'STORE'.

Parameters:
invocation -
result -
Throws:
Exception

getRequestOperationMode

protected String getRequestOperationMode(ActionInvocation invocation)
Get the operationMode through request paramter, if allowRequestParameterSwitch is 'true', else it simply returns 'NONE', meaning its neither in the 'STORE_MODE' nor 'RETRIEVE_MODE'.

Returns:
String

mergeCollection

protected Collection mergeCollection(Collection col1,
                                     Collection col2)
Merge col1 and col2 and return the composite Collection.

Parameters:
col1 -
col2 -
Returns:
Collection

mergeMap

protected Map mergeMap(Map map1,
                       Map map2)
Merge map1 and map2 and return the composite Map

Parameters:
map1 -
map2 -
Returns:
Map


Copyright © 2000-2009 Apache Software Foundation. All Rights Reserved.