| org.apache.struts.actions.BaseAction org.apache.struts.actions.DispatchAction
All known Subclasses: org.apache.struts.webapp.dispatch.DispatchExampleAction, org.apache.struts.actions.LookupDispatchAction, org.apache.struts.actions.EventDispatchAction, org.apache.struts.actions.MappingDispatchAction,
DispatchAction | abstract public class DispatchAction extends BaseAction (Code) | | An abstract Action that dispatches to a public method
that is named by the request parameter whose name is specified by the
parameter property of the corresponding ActionMapping. This
Action is useful for developers who prefer to combine many similar actions
into a single Action class, in order to simplify their application
design.
To configure the use of this action in your struts-config.xml
file, create an entry like this:
<action path="/saveSubscription" type="org.apache.struts.actions.DispatchAction"
name="subscriptionForm" scope="request" input="/subscription.jsp"
parameter="method"/>
which will use the value of the request parameter named "method" to pick
the appropriate "execute" method, which must have the same signature (other
than method name) of the standard Action.execute method. For example, you
might have the following three methods in the same action:
- public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
Exception
- public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
Exception
- public ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) throws
Exception
and call one of the methods with a URL like this:
http://localhost:8080/myapp/saveSubscription.do?method=update
NOTE - All of the other mapping characteristics of this
action must be shared by the various handlers. This places some
constraints over what types of handlers may reasonably be packaged into the
same DispatchAction subclass.
NOTE - If the value of the request parameter is empty,
a method named unspecified is called. The default action is to
throw an exception. If the request was cancelled (a
html:cancel button was pressed), the custom handler
cancelled will be used instead. You can also override the
getMethodName method to override the action's default handler
selection.
version: $Rev: 471754 $ $Date: 2006-11-06 08:55:09 -0600 (Mon, 06 Nov 2006) $ |
Field Summary | |
protected Class | clazz The Class instance of this DispatchAction class. | protected static Log | log Commons Logging instance. | 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. |
Method Summary | |
protected ActionForward | cancelled(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) Method which is dispatched to when the request is a cancel button
submit. | protected ActionForward | dispatchMethod(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String name) Dispatch to the specified method. | public 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) | protected ActionForward | unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) Method which is dispatched to when there is no value for specified
request parameter included in the request. |
clazz | protected Class clazz(Code) | | The Class instance of this DispatchAction class.
|
log | protected static Log log(Code) | | Commons Logging instance.
|
methods | protected HashMap methods(Code) | | 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(Code) | | The set of argument type classes for the reflected method call. These
are the same for all calls, so calculate them only once.
|
cancelled | protected ActionForward cancelled(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception(Code) | | Method which is dispatched to when the request is a cancel button
submit. Subclasses of DispatchAction should override this
method if they wish to provide default behavior different than
returning null.
Parameters: mapping - The ActionMapping used to select this instance Parameters: form - The optional ActionForm bean for this request (if any) Parameters: request - The non-HTTP request we are processing Parameters: response - The non-HTTP response we are creating The forward to which control should be transferred, ornull if the response has been completed. throws: Exception - if the application business logic throws anexception. since: Struts 1.2.0 |
dispatchMethod | protected ActionForward dispatchMethod(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String name) throws Exception(Code) | | Dispatch to the specified method.
Parameters: mapping - The ActionMapping used to select this instance Parameters: form - The optional ActionForm bean for this request (if any) Parameters: request - The non-HTTP request we are processing Parameters: response - The non-HTTP response we are creating Parameters: name - The name of the method to invoke The forward to which control should be transferred, ornull if the response has been completed. throws: Exception - if the application business logic throws anexception. since: Struts 1.1 |
execute | public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception(Code) | | 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 Parameters: form - The optional ActionForm bean for this request (if any) Parameters: request - The HTTP request we are processing Parameters: response - The HTTP response we are creating The forward to which control should be transferred, ornull if the response has been completed. throws: Exception - if an exception occurs |
getMethod | protected Method getMethod(String name) throws NoSuchMethodException(Code) | | 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 The method with the specified name. throws: NoSuchMethodException - if no such method can be found |
getMethodName | protected String getMethodName(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String parameter) throws Exception(Code) | | Returns the method name, given a parameter's value.
Parameters: mapping - The ActionMapping used to select this instance Parameters: form - The optional ActionForm bean for this request (ifany) Parameters: request - The HTTP request we are processing Parameters: response - The HTTP response we are creating Parameters: parameter - The ActionMapping parameter's name The method's name. throws: Exception - if an error occurs. since: Struts 1.2.0 |
getParameter | protected String getParameter(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception(Code) | | Returns the parameter value.
Parameters: mapping - The ActionMapping used to select this instance Parameters: form - The optional ActionForm bean for this request (if any) Parameters: request - The HTTP request we are processing Parameters: response - The HTTP response we are creating The ActionMapping parameter's value throws: Exception - if the parameter is missing. |
unspecified | protected ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception(Code) | | Method which is dispatched to when there is no value for specified
request parameter included in the request. Subclasses of
DispatchAction should override this method if they wish to
provide default behavior different than throwing a ServletException.
Parameters: mapping - The ActionMapping used to select this instance Parameters: form - The optional ActionForm bean for this request (if any) Parameters: request - The non-HTTP request we are processing Parameters: response - The non-HTTP response we are creating The forward to which control should be transferred, ornull if the response has been completed. throws: Exception - if the application business logic throws anexception. |
|
|