} else { ctx.setActionBean(actionBean); ctx.setActionBeanContext(actionBean.getContext());
    public int doStartTag() throws JspException {        // Check to see if the action bean already exists        boolean beanNotPresent = getPageContext().findAttribute(binding) == null;        try {            final Configuration config = StripesFilter.getConfiguration();            final ActionResolver resolver = StripesFilter.getConfiguration().getActionResolver();            final HttpServletRequest request = (HttpServletRequest) getPageContext().getRequest();            final HttpServletResponse response = (HttpServletResponse) getPageContext().getResponse();            Resolution resolution = null;            ExecutionContext ctx = new ExecutionContext();            // Lookup the ActionBean if we don't already have it            if (beanNotPresent) {                ActionBeanContext tempContext =                        config.getActionBeanContextFactory().getContextInstance(request, response);                tempContext.setServletContext(getPageContext().getServletContext());                ctx.setLifecycleStage(LifecycleStage.ActionBeanResolution);                ctx.setActionBeanContext(tempContext);                // Run action bean resolution                ctx.setInterceptors(config.getInterceptors(LifecycleStage.ActionBeanResolution));                resolution = ctx.wrap( new Interceptor() {                    public Resolution intercept(ExecutionContext ec) throws Exception {                        ActionBean bean = resolver.getActionBean(ec.getActionBeanContext(), binding);                        ec.setActionBean(bean);                        return null;                    }                });            }            // Then, if and only if an event was specified, run handler resolution            if (resolution == null && event != null && (beanNotPresent || this.alwaysExecuteEvent)) {                ctx.setLifecycleStage(LifecycleStage.HandlerResolution);                ctx.setInterceptors(config.getInterceptors(LifecycleStage.HandlerResolution));                resolution = ctx.wrap( new Interceptor() {                    public Resolution intercept(ExecutionContext ec) throws Exception {                        ec.setHandler(resolver.getHandler(ec.getActionBean().getClass(), event));                        ec.getActionBeanContext().setEventName(event);                        return null;                    }                });            }            // Make the PageContext available during the validation stage so that we            // can execute EL based expression validation            try {                DispatcherHelper.setPageContext(getPageContext());                // Bind applicable request parameters to the ActionBean                if (resolution == null && (beanNotPresent || this.validate == true)) {                    resolution = DispatcherHelper.doBindingAndValidation(ctx, this.validate);                }                // Run custom validations if we're validating                if (resolution == null && this.validate == true) {                    String temp =  config.getBootstrapPropertyResolver().getProperty(                                        DispatcherServlet.RUN_CUSTOM_VALIDATION_WHEN_ERRORS);                    boolean validateWhenErrors = temp != null && Boolean.valueOf(temp);                    resolution = DispatcherHelper.doCustomValidation(ctx, validateWhenErrors);                }            }            finally {                DispatcherHelper.setPageContext(null);            }            // Fill in any validation errors if they exist            if (resolution == null && this.validate == true) {                resolution = DispatcherHelper.handleValidationErrors(ctx);            }            // And (again) if an event was supplied, then run the handler            if (resolution == null && event != null && (beanNotPresent || this.alwaysExecuteEvent)) {                resolution = DispatcherHelper.invokeEventHandler(ctx);            }            DispatcherHelper.fillInValidationErrors(ctx);  // just in case!            if (resolution != null && this.executeResolution) {                DispatcherHelper.executeResolution(ctx, resolution);            }            // If a name was specified, bind the ActionBean into page context            if (getVar() != null) {                pageContext.setAttribute(getVar(), ctx.getActionBean());            }            return SKIP_BODY;        }        catch(Exception e) {            throw new StripesJspException("Unabled to prepare ActionBean for JSP Usage",e);        }    }