public ActionForward execute ( ActionMapping mapping , ActionForm form , HttpServletRequest request , HttpServletResponse response ) throws Exception { // // Don't actually run the action (and perform the associated synchronization) if there are too many // concurrent requests to this instance. // if ( incrementRequestCount ( request , response , getServletContext ( ) ) ) { try { // netui:sync-point synchronized ( this ) { ActionForward ret = null ; // establish the control context for running the beginAction, Action, afterAction code PageFlowControlContainer pfcc = null ; try { pfcc = PageFlowControlContainerFactory . getControlContainer ( request , getServletContext ( ) ) ; pfcc . beginContextOnPageFlow ( this , request , response , getServletContext ( ) ) ; } catch ( Exception e ) { return handleException ( e , mapping , form , request , response ) ; } try { // execute the beginAction, Action, afterAction code ret = internalExecute ( mapping , form , request , response ) ; } finally { try { pfcc . endContextOnPageFlow ( this ) ; } catch ( Exception e ) { // if already handling an exception during execute, then just log PageFlowRequestWrapper rw = PageFlowRequestWrapper . get ( request ) ; Throwable alreadyBeingHandled = rw . getExceptionBeingHandled ( ) ; if ( alreadyBeingHandled != null ) { _log . error ( "Exception thrown while ending context on page flow in execute()" , e ) ; } else { return handleException ( e , mapping , form , request , response ) ; } } } return ret ; } } finally { decrementRequestCount ( request ) ; } } else { return null ; // error was written to the response by incrementRequestCount() } }
Perform decision logic to determine the next URI to be displayed .