In the struts-config.xml file, add an <exception> 
element to this action. You can also put it in the 
<global-exceptions> section if more than one action will 
utilize this exception handler. 

Here's an example action mapping using an exception 
element:

 <action
   path="/signin"
   type="com.cavaness.beer4all.security.LoginAction"
   scope="request"
   name="loginForm"
   validate="true"
   input="/signin.jsp">
   <exception 
     handler="com.foo.MyExceptionHandler"
     key="error.invalidlogin"
     path="/signin.jsp"
     scope="request"
type="com.cavaness.beer4all.common.exceptions.InvalidLogi
nException"/> 
   <forward name="Success" path="/index.jsp" 
redirect="true"/>
   <forward name="Failure" path="/signin.jsp"/>    
 </action> 

Notice the <exception> element. The handler attribute is 
the fully-qualified class name of your handler. As you 
have done, it must extend the default handler. The type 
attribute specifes the fully-qualified exception class 
for when you want to call this exception handler. You 
can put "java.lang.Exception" if you want this handler 
to process all exceptions thrown during this Action.

Hope that helps,
Chuck
> I have a class that extents the default struts ExceptionHandler ( see below).
> 
> Now, when an exception occurs in the 'Action' class..., how do i make 
> sure that
> the 'execute()' in 'MyExceptionHandler' is executed instaed of the 
> default ExceptionHandler?
> 
> 
> public class MyExceptionHandler extends ExceptionHandler {
> 
>       private MyChainedException tCE = null;=
> 
>       /**
>        * Constructor for an external message 
>        * @param tce of type MyChainedException
>        *
>        */
>       public MyExceptionHandler(MyChainedException tce) {
>               this.tCE = tce;                                 
>                                                       
>       }
>       public ActionForward execute(Exception ex,
>                                       ExceptionConfig config,
>                                       ActionMapping mapping,
>                                       ActionForm formInstance,
>                                       HttpServletRequest request,
>                                       HttpServletResponse response)
>      throws ServletException {
>       ActionForward forward = null;
>       ActionError error = null;
>       String property = null;
> 
>       /* Get the path for the forward either from the exception element
>        * or from the input attribute.
>        */
>       String path = null;
>       if (config.getPath() != null) {
>        path = config.getPath();
>       }else{
>         path = mapping.getInput();
>       }
>       // Construct the forward object
>       forward = new ActionForward(path);
> 
>       /* Figure out what type of exception has been thrown. The Struts
>        * AppException is not being used in this example.
>        */
>       if( tCE instanceof MyChainedException) {
>         // This is the specialized behavior
>        
>         Throwable t = tCE.getCause();
>         String messageKey = t.getClass().getName();
>         error = new ActionError( messageKey );
>        
>       }
> 
>       // Store the ActionError into the proper scope
>       // The storeException method is defined in the parent class
>       storeException(request, property, error, forward, =
> config.getScope());
> 
>       return forward;
>     }
> 
> 
> }
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> 

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

Reply via email to