Hum... To my modest opinion, this is how Struts is designed.
The "execute" method of the Action class raise Exception. For exemple when I implement an action that can raise an "IdentificationException", I have to register an ExceptionHandler for this exception in the corresponding <action> Here is 2 extracts from the struts-config_1_1.dtd concerning this point : <!ELEMENT action (icon?, display-name?, description?, set-property*, exception*, forward*)> And the comment about "execption" : <!-- The "exception" element registers an ExceptionHandler for an exception type. The following attributes are defined: bundle Servlet context attribute for the message resources bundle associated with this handler. The default attribute is the value specified by the string constant declared at Globals.MESSAGES_KEY. [org.apache.struts.Globals.MESSAGES_KEY] className The configuration bean for this ExceptionHandler object. If specified, className must be a subclass of the default configuration bean ["org.apache.struts.config.ExceptionConfig"] handler Fully qualified Java class name for this exception handler. ["org.apache.struts.action.ExceptionHandler"] key The key to use with this handler's message resource bundle that will retrieve the error message template for this exception. path The module-relative URI to the resource that will complete the request/response if this exception occurs. scope The context ("request" or "session") that is used to access the ActionError object [org.apache.struts.action.ActionError] for this exception. type Fully qualified Java class name of the exception type to register with this handler. --> regards ----- Original Message ----- From: "Dario Geier" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Monday, March 31, 2003 4:41 PM Subject: RE: Right way to extends Action Ho Xavier, so, how do you know which exception are thrown? You'll discover them at runtime :( -----Original Message----- From: Xavier Saint-Denis [mailto:[EMAIL PROTECTED] Sent: Monday, March 31, 2003 5:40 PM To: Struts Users Mailing List Subject: Re: Right way to extends Action Hi, Why have we choose to raise "Execption" on our BaseAction ? Because, as was designed the "execute" method of the "Action" class, the exceptions raised in an action class are passed back to the ActionSevlet, who can handle all the exceptions that we have defined in the Struts config file. Xavier ----- Original Message ----- From: "Dario Geier" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Monday, March 31, 2003 2:41 PM Subject: RE: Right way to extends Action I would change the signature of the executeAction method not to throw Exception, but a custom ActionException. This way, you would be able to be aware of what exceptions are thrown in your action code. i.e. public abstract ActionForward executeAction( ActionMapping _mapping, ActionForm _form, HttpServletRequest _req, HttpServletResponse _res) throws MyActionException; -----Original Message----- From: Xavier Saint-Denis [mailto:[EMAIL PROTECTED] Sent: Monday, March 31, 2003 3:21 PM To: Struts Users Mailing List Subject: Re: Right way to extends Action Hi, In our application we use a similar concept : - we have a class like this : public abstract class BaseAction extends Action In this class : - we added some usefull field like a logger an a pointer to a singleton that retains application's data protected Log log = LogFactory.getLog(this.getClass()); protected static final Infos infos = Infos.getInstance(); - We change the modifier of the execute Method so as to be sure nobody use it directly: public final ActionForward execute(ActionMapping _mapping, ActionForm _form, HttpServletRequest _req, HttpServletResponse _res) throws Exception { - In this method we check the user session and log in information - At the end of this method we call return executeAction(_mapping, _form, _req, _res); - This method "executeAction" is defined as this : public abstract ActionForward executeAction(ActionMapping _mapping, ActionForm _form, HttpServletRequest _req, HttpServletResponse _res) throws Exception; - So when we create a new action, we extend BaseAction and implement the abstract method executeAction This way, we have automatic user login check, and a logger at disposition. regards, Xavier ----- Original Message ----- From: "niksa_os" <[EMAIL PROTECTED]> To: "Struts Users Mailing List" <[EMAIL PROTECTED]> Sent: Monday, March 31, 2003 1:45 PM Subject: Right way to extends Action I want all my Actions to extend BaseAction. In BaseAction I want to check user session and to put some data in it, if that data doesn't exist. Is it good way: public class SomeAction extends BaseAction { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { super.execute( mapping,form, request, response); OK, proceed ........... public class BaseAction extends BaseAction { public ActionForward execute( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response ) { if (userSession is wrong) { -try -- put data in session -catch -- return mapping.findForward("wrongSession");} else return null; //everything is OK What you think about this way and is there better way to extend Action? Thanks. --------------------------------------------------------------------- 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]