Actually, Hubert,

With SimpleDispatchAction this makes a lot of sense. I would really go for this and think I will work on that too. I don't think it makes a lot of sense for the present actions, however, because they are so wedded to the ActionMapping. SimpleDispatchAction allows that but the present actions require it.

I definitely, however, think that this would be vastly preferable to the SimpleDispatchAction code and would be very useful even without a MySuperAmazingBaseAction, which probably is Action? LOL ;-) This might even be something, as a util, that I would see as not a "bloat".

Michael McGrady

Hubert Rabago wrote:

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]









--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to