It should work just fine. - change your base action to extend DispatchAction - in execute(), call preProcess(), super.execute(), then postProcess()
...assuming you've implemented your custom methods (e.g. search(), save(), whatever() ) and you understand how DispatchAction works, it should all fall into place and work fine. NOTE - DispatchAction has a pretty serious bug in the Struts 1.1 version (potential recursive loop until the server spits out of memory exceptions), so you will want to use a later version or add a fix in your BaseAction. Let me know if you need help with it. -- James Mitchell Software Engineer / Open Source Evangelist EdgeTech, Inc. 678.910.8017 AIM: jmitchtx > -----Original Message----- > From: news [mailto:[EMAIL PROTECTED] On Behalf Of Gianluca > Sent: Friday, May 07, 2004 8:55 AM > To: [EMAIL PROTECTED] > Subject: BaseDispacthAction? > > I've defined and I'm using a subclass of Action > (my.package.BaseAction), in order to implement the Template > design pattern, so I use this class instead of the Action > class provided by STRUTS. The intended goal is that things > that are common to all actions are performed here, such as > logging and validation of the user's session, some > postprocessing, etc. > In that class I've declared the execute(..) method as final, > so that no subclass can override it: > > public final ActionForward execute( > ActionMapping mapping, > ActionForm form, > HttpServletRequest request, > HttpServletResponse response) > throws Exception { > > _log = Logger.getLogger(this.getClass()); > if (_log.isDebugEnabled()) { > _log.debug(someString); > } > > try { > // Check for precondition errors; fail if found > if (preProcess(mapping,form,request,response)) { > // Execute actual logic > ActionForward forward = > executeLogic(mapping,form,request,response); > } > // Some postprocessing... > postProcess(mapping,form,request,response); > > return forward; > > } catch (SessionNotValidActionException se) { > if (_log.isDebugEnabled()) { > _log.debug("Session is not valid, > redirecting to login."); > } > return mapping.findForward("login"); > } catch (...) { > ... > } finally { > ... > } > > if (_log.isDebugEnabled()) { > _log.debug("Leaving execute method."); > } > } > > and I provide the two methods - preProcess and postProcess - > together with an abstract executeLogic method, and some other > common helper needs into utility methods. > > But Actions classes are often too small, and this ruins the > cohesiveness of the application. So I would like to start > employing DispactchAction classes to group related actions. > Do you have any suggestion on how to implement the above > approach (template pattern) to extend DispatchAction, in > order to define a BaseDispatchAction? > > Thanks, > Gianluca > > > --------------------------------------------------------------------- > 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]