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]

Reply via email to