org.apache.struts.actions
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:
DispatchAction
except uses "method"
as a default if the parameter
is not specified
in the struts-config.xml).DispatchAction
).MappingDispatchAction
).Since: Struts 1.2.7
Version: $Revision: 383720 $ $Date: 2006-03-07 00:07:59 +0000 (Tue, 07 Mar 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. |
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. |
static int | MAPPING_FLAVOR
Indicates "mapping" dispatch flavor |
protected Class[] | types
The set of argument type classes for the reflected method call. |
Constructor Summary | |
---|---|
ActionDispatcher(Action actionInstance) | |
ActionDispatcher(Action actionInstance, int flavor) |
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
{@link #flavor} specified for this |
protected boolean | isCancelled(HttpServletRequest request) Returns |
protected ActionForward | unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) Dispatches to the target class' |
DispatchAction
class.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.
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
Throws: Exception if an exception occurs
execute
method does.
Parameters: name Name of the method to be introspected
Throws: NoSuchMethodException if no such method can be found
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.
Returns the parameter value as influenced by the selected
{@link #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
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
See Also: CancelTag
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..