Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.apache.struts.actions
Class ActionDispatcher

    java.lang.Object
      org.apache.struts.actions.ActionDispatcher

Direct Known Subclasses:
  EventActionDispatcher

    public class ActionDispatcher

extends Object

Action helper class that dispatches to a public method in an Action.

This class is provided as an alternative mechanism to using DispatchAction and its various flavours and means Dispatch behaviour can be easily implemented into any `Action` without having to inherit from a particular super `Action`.

To implement dispatch behaviour in an `Action` class, create your custom Action as follows, along with the methods you require (and optionally "cancelled" and "unspecified" methods):

       public class MyCustomAction extends Action {

           protected ActionDispatcher dispatcher
                    = new ActionDispatcher(this, ActionDispatcher.MAPPING_FLAVOR);

           public ActionForward execute(ActionMapping mapping,
                                        ActionForm form,
                                        HttpServletRequest request,
                                        HttpServletResponse response)
                               throws Exception {
               return dispatcher.execute(mapping, form, request, response);
           }
       }

It provides three flavours of determing the name of the method:

- `DEFAULT_FLAVOR` - uses the parameter specified in the struts-config.xml to get the method name from the Request (equivalent to `DispatchAction` except uses "method" as a default if the `parameter` is not specified in the struts-config.xml).
- `DISPATCH_FLAVOR` - uses the parameter specified in the struts-config.xml to get the method name from the Request (equivalent to `DispatchAction`).
- `MAPPING_FLAVOR` - uses the parameter specified in the struts-config.xml as the method name (equivalent to `MappingDispatchAction`).

Since:
  Struts 1.2.7
Version:
  $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $

Field Summary
`protected Action` | `actionInstance` The associated Action to dispatch to.
`protected Class` | `clazz` The Class instance of this `DispatchAction` class.
`static int` | `DEFAULT_FLAVOR` Indicates "default" dispatch flavor.
`static int` | `DISPATCH_FLAVOR` Indicates flavor compatible with DispatchAction.
`protected int` | `flavor` Indicates dispatch flavor.
`protected static Log` | `log` Commons Logging instance.
`static int` | `MAPPING_FLAVOR` Indicates "mapping" dispatch flavor.
`protected static MessageResources` | `messages` The message resources for this package.
`protected HashMap` | `methods` The set of Method objects we have introspected for this class, keyed by method name.
`protected Class[]` | `types` The set of argument type classes for the reflected method call.

Constructor Summary
`ActionDispatcher(Action actionInstance)` Construct an instance of this class from the supplied parameters.
`ActionDispatcher(Action actionInstance, int flavor)` Construct an instance of this class from the supplied parameters.

Method Summary
`protected ActionForward` | `cancelled(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)` Dispatches to the target class' cancelled method, if present, otherwise returns null.
`protected ActionForward` | `dispatchMethod(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String name)` Dispatch to the specified method.
`protected ActionForward` | `dispatchMethod(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String name, Method method)` Dispatch to the specified method.
`ActionForward` | `execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)` Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it).
`protected Method` | `getMethod(String name)` Introspect the current class to identify a method of the specified name that accepts the same parameter types as the `execute` method does.
`protected String` | `getMethodName(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String parameter)` Returns the method name, given a parameter's value.
`protected String` | `getParameter(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)` Returns the parameter value as influenced by the selected `flavor` specified for this `ActionDispatcher`.
`protected boolean` | `isCancelled(HttpServletRequest request)` Returns `true` if the current form's cancel button was pressed.
`protected ActionForward` | `unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)` Dispatches to the target class' `unspecified` method, if present, otherwise throws a ServletException.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### DEFAULT_FLAVOR

    public static final int DEFAULT_FLAVOR

  Indicates "default" dispatch flavor.

  See Also:
    Constant Field Values

### MAPPING_FLAVOR

    public static final int MAPPING_FLAVOR

  Indicates "mapping" dispatch flavor.

  See Also:
    Constant Field Values

### DISPATCH_FLAVOR

    public static final int DISPATCH_FLAVOR

  Indicates flavor compatible with DispatchAction.

  See Also:
    Constant Field Values

### log

    protected static Log log

  Commons Logging instance.

### messages

    protected static MessageResources messages

  The message resources for this package.

### actionInstance

    protected Action actionInstance

  The associated Action to dispatch to.

### flavor

    protected int flavor

  Indicates dispatch flavor.

### clazz

    protected Class clazz

  The Class instance of this `DispatchAction` class.

### methods

    protected HashMap methods

  The set of Method objects we have introspected for this class, keyed by method name. This collection is populated as different methods are called, so that introspection needs to occur only once per method name.

### types

    protected Class[] types

  The set of argument type classes for the reflected method call. These are the same for all calls, so calculate them only once.

Constructor Detail

### ActionDispatcher

    public ActionDispatcher(Action actionInstance)

  Construct an instance of this class from the supplied parameters.

  Parameters:
    `actionInstance` - The action instance to be invoked.

### ActionDispatcher

    public ActionDispatcher(Action actionInstance,
                            int flavor)

  Construct an instance of this class from the supplied parameters.

  Parameters:
    `actionInstance` - The action instance to be invoked.
    `flavor` - The flavor of dispatch to use.

Method Detail

### execute

    public ActionForward execute(ActionMapping mapping,
                                 ActionForm form,
                                 HttpServletRequest request,
                                 HttpServletResponse response)
                          throws Exception

  Process the specified HTTP request, and create the corresponding HTTP response (or forward to another web component that will create it). Return an `ActionForward` instance describing where and how control should be forwarded, or `null` if the response has already been completed.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The HTTP request we are processing
    `response` - The HTTP response we are creating
  Returns:
    The forward to which control should be transferred, or `null` if the response has been completed.
  Throws:
    `Exception` - if an exception occurs

### unspecified

    protected ActionForward unspecified(ActionMapping mapping,
                                        ActionForm form,
                                        HttpServletRequest request,
                                        HttpServletResponse response)
                                 throws Exception

  Dispatches to the target class' `unspecified` method, if present, otherwise throws a ServletException. Classes utilizing `ActionDispatcher` should provide an `unspecified` method if they wish to provide behavior different than throwing a ServletException.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The non-HTTP request we are processing
    `response` - The non-HTTP response we are creating
  Returns:
    The forward to which control should be transferred, or `null` if the response has been completed.
  Throws:
    `Exception` - if the application business logic throws an exception.

### cancelled

    protected ActionForward cancelled(ActionMapping mapping,
                                      ActionForm form,
                                      HttpServletRequest request,
                                      HttpServletResponse response)
                               throws Exception

  Dispatches to the target class' cancelled method, if present, otherwise returns null. Classes utilizing `ActionDispatcher` should provide a `cancelled` method if they wish to provide behavior different than returning null.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The non-HTTP request we are processing
    `response` - The non-HTTP response we are creating
  Returns:
    The forward to which control should be transferred, or `null` if the response has been completed.
  Throws:
    `Exception` - if the application business logic throws an exception.

### dispatchMethod

    protected ActionForward dispatchMethod(ActionMapping mapping,
                                           ActionForm form,
                                           HttpServletRequest request,
                                           HttpServletResponse response,
                                           String name)
                                    throws Exception

  Dispatch to the specified method.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The non-HTTP request we are processing
    `response` - The non-HTTP response we are creating
    `name` - The name of the method to invoke
  Returns:
    The forward to which control should be transferred, or `null` if the response has been completed.
  Throws:
    `Exception` - if the application business logic throws an exception.

### dispatchMethod

    protected ActionForward dispatchMethod(ActionMapping mapping,
                                           ActionForm form,
                                           HttpServletRequest request,
                                           HttpServletResponse response,
                                           String name,
                                           Method method)
                                    throws Exception

  Dispatch to the specified method.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The non-HTTP request we are processing
    `response` - The non-HTTP response we are creating
    `name` - The name of the method to invoke
    `method` - The method to invoke
  Returns:
    The forward to which control should be transferred, or `null` if the response has been completed.
  Throws:
    `Exception` - if the application business logic throws an exception.

### getMethod

    protected Method getMethod(String name)
                        throws NoSuchMethodException

  Introspect the current class to identify a method of the specified name that accepts the same parameter types as the `execute` method does.

  Parameters:
    `name` - Name of the method to be introspected
  Returns:
    The method with the specified name.
  Throws:
    `NoSuchMethodException` - if no such method can be found

### getParameter

    protected String getParameter(ActionMapping mapping,
                                  ActionForm form,
                                  HttpServletRequest request,
                                  HttpServletResponse response)
                           throws Exception

  Returns the parameter value as influenced by the selected `flavor` specified for this `ActionDispatcher`.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The HTTP request we are processing
    `response` - The HTTP response we are creating
  Returns:
    The `ActionMapping` parameter's value
  Throws:
    `Exception` - if an error occurs.

### getMethodName

    protected String getMethodName(ActionMapping mapping,
                                   ActionForm form,
                                   HttpServletRequest request,
                                   HttpServletResponse response,
                                   String parameter)
                            throws Exception

  Returns the method name, given a parameter's value.

  Parameters:
    `mapping` - The ActionMapping used to select this instance
    `form` - The optional ActionForm bean for this request (if any)
    `request` - The HTTP request we are processing
    `response` - The HTTP response we are creating
    `parameter` - The `ActionMapping` parameter's name
  Returns:
    The method's name.
  Throws:
    `Exception` - if an error occurs.

### isCancelled

    protected boolean isCancelled(HttpServletRequest request)

  Returns `true` if the current form's cancel button was pressed. This method will check if the `Globals.CANCEL_KEY` request attribute has been set, which normally occurs if the cancel button generated by CancelTag was pressed by the user in the current request. If `true`, validation performed by an ActionForm's `validate()` method will have been skipped by the controller servlet.

  Parameters:
    `request` - The servlet request we are processing
  Returns:
    `true` if the current form's cancel button was pressed; `false` otherwise.
  See Also:
    `CancelTag`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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