I haven't had a chance to look into the latest DispatchAction yet, but if it's already in there, I wouldn't be surprised. I'll take a look later.
What I had in mind was moving the "find which Action method to call then call it" logic to a utility class, so that if I needed that functionality, I could use it without having to inherit DispatchAction or one of its subclasses. This way, I wouldn't have to choose between having a BaseAction that's used by all the Actions in my application and one of the DispatchAction flavors. Like this: public class MyDispatchAction extends MySuperAmazingBaseAction { public ActionForward execute(_usual_params) { RequestUtils.dispatch(this, _usual_params); } public ActionForward add(_usual_params) { } public ActionForward edit(_usual_params) { } public ActionForward save(_usual_params) { } } Hubert On Thu, 16 Sep 2004 22:07:30 +0100, Niall Pemberton <[EMAIL PROTECTED]> wrote: > Hubert, > > Is this what has already happened in DispatchAction with the getMethodName() > method that has been added since Struts 1.2.0? > > Maybe I've mis-understood what you're saying. > > Niall > > > > > ----- Original Message ----- > From: "Hubert Rabago" <[EMAIL PROTECTED]> > To: "Struts Developers List" <[EMAIL PROTECTED]> > Sent: Thursday, September 16, 2004 8:23 PM > Subject: RE: DispatchAction (was: [Apache Struts Wiki] Updated: > StrutsCatalogSimpleDispatchAction) > > > I was actually thinking of playing around with this idea, so that the > > way the method is determined is refactored out, similar to how you > > (Niall) changed ValidatorActionForm. > > > > Specifically, I'm interested in figuring out if we can refactor it in > > such a way that it becomes useful to other Action hierarchies. One of > > the issues with using an app-specific base class is that they lose the > > functionality provided by the Action subclasses that comes with > > Struts. If we can move this code outside of the *DispatchAction > > classes, app-specific base classes can take advantage of these > > features as well. > > > > Hubert > > > > On Thu, 16 Sep 2004 18:05:46 -0000, [EMAIL PROTECTED] > > <[EMAIL PROTECTED]> wrote: > > > Date: 2004-09-16T11:05:45 > > > Editor: NiallPemberton <[EMAIL PROTECTED]> > > > Wiki: Apache Struts Wiki > > > Page: StrutsCatalogSimpleDispatchAction > > > URL: http://wiki.apache.org/struts/StrutsCatalogSimpleDispatchAction > > > > > > no comment > > > > > > Change Log: > > > > > > > -------------------------------------------------------------------------- > ---- > > > @@ -179,5 +179,47 @@ > > > > > > '''Michael !McGrady''' > > > > > > +---- > > > > > > +Seems to me that most of the SimpleDispatchAction duplicates whats > already in the DispatchAction class. If we re-factored DispatchAction so > that the parameter retrieval was moved into a new getParameter() method then > all that would be needed to achieve what you want is a flavour that > overrides the getParameter()/getMethodName() methods. > > > + > > > +Something along the lines of ... > > > + > > > +{{{ > > > +public abstract class SimpleDispatchAction extends DispatchAction { > > > + > > > + protected String getParameter(ActionMapping mapping, > > > + ActionForm form, > > > + HttpServletRequest request, > > > + HttpServletResponse response) { > > > + > > > + return mapping.getParameter(); > > > + > > > + } > > > + > > > + protected String getMethodName(ActionMapping mapping, > > > + ActionForm form, > > > + HttpServletRequest request, > > > + HttpServletResponse response, > > > + String parameter) { > > > + > > > + if((parameter != null) && (parameter.endsWith(".x"))) { > > > + methodName = parameter.substring(0,parameter.indexOf('.')); > > > + } else { > > > + Enumeration enum = request.getParameterNames(); > > > + while(enum.hasMoreElements()) { > > > + buttonValue = (String)enum.nextElement(); > > > + if(buttonValue.endsWith(".x")) { > > > + methodName = > buttonValue.substring(0,buttonValue.indexOf(".x")); > > > + } > > > + } > > > + } > > > + return methodName; > > > + } > > > + > > > +} > > > + > > > +}}} > > > + > > > +'''Niall Pemberton''' > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]