org.apache.struts.actions

Class EventDispatchAction

public class EventDispatchAction extends DispatchAction

An Action that dispatches to to one of the public methods that are named in the parameter attribute of the corresponding ActionMapping and matches a submission parameter. This is useful for developers who prefer to use many submit buttons, images, or submit links on a single form and whose related actions exist in a single Action class.

The method(s) must have the same signature (other than method name) of the standard Action.execute method.

To configure the use of this action in your struts-config.xml file, create an entry like this:


   <action path="/saveSubscription"
           type="org.example.SubscriptionAction"
           name="subscriptionForm"
          scope="request"
          input="/subscription.jsp"
      parameter="save,back,recalc=recalculate,default=save"/>
 

where parameter contains three possible methods and one default method if nothing matches (such as the user pressing the enter key).

For utility purposes, you can use the key=value notation to alias methods so that they are exposed as different form element names, in the event of a naming conflict or otherwise. In this example, the recalc button (via a request parameter) will invoke the recalculate method. The security-minded person may find this feature valuable to obfuscate and not expose the methods.

The default key is purely optional. If this is not specified and no parameters match the list of method keys, null is returned which means the unspecified method will be invoked.

The order of the parameters are guaranteed to be iterated in the order specified. If multiple buttons were accidently submitted, the first match in the list will be dispatched.

Since: Struts 1.2.9

Field Summary
static StringDEFAULT_METHOD_KEY
The method key, if present, to use if other specified method keys do not match a request parameter.
static LogLOG
Commons Logging instance.
Method Summary
protected StringgetMethodName(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String parameter)
Returns the method name, given a parameter's value.
protected ActionForwardunspecified(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.

Field Detail

DEFAULT_METHOD_KEY

private static final String DEFAULT_METHOD_KEY
The method key, if present, to use if other specified method keys do not match a request parameter.

LOG

private static final Log LOG
Commons Logging instance.

Method Detail

getMethodName

protected String getMethodName(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String parameter)
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.

unspecified

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. 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 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.

Copyright B) 2000-2008 - The Apache Software Foundation