tempContext.setServletContext(getPageContext().getServletContext());
    public int doStartTag() throws JspException {        // Check to see if the action bean already exists        ActionBean actionBean = (ActionBean) pageContext.getRequest().getAttribute(binding);        if (actionBean == null) {            try {                final Configuration config = StripesFilter.getConfiguration();                HttpServletRequest request = (HttpServletRequest) getPageContext().getRequest();                HttpServletResponse response = (HttpServletResponse) getPageContext().getResponse();                // Setup the context stuff needed to emulate the dispatcher                ActionBeanContext tempContext =                        config.getActionBeanContextFactory().getContextInstance(request, response);                ExecutionContext ctx = new ExecutionContext();                ctx.setLifecycleStage(LifecycleStage.ActionBeanResolution);                ctx.setActionBeanContext(tempContext);                // Run action bean resolution                final ActionResolver resolver = StripesFilter.getConfiguration().getActionResolver();                ctx.setInterceptors(config.getInterceptors(LifecycleStage.ActionBeanResolution));                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 (event != null) {                    ctx.setLifecycleStage(LifecycleStage.HandlerResolution);                    ctx.setInterceptors(config.getInterceptors(LifecycleStage.HandlerResolution));                    ctx.wrap( new Interceptor() {                        public Resolution intercept(ExecutionContext ec) throws Exception {                            ec.setHandler(resolver.getHandler(ec.getActionBean().getClass(), event));                            return null;                        }                    });                }                // Bind applicable request parameters to the ActionBean                ctx.setLifecycleStage(LifecycleStage.BindingAndValidation);                ctx.setInterceptors(config.getInterceptors(LifecycleStage.BindingAndValidation));                ctx.wrap( new Interceptor() {                    public Resolution intercept(ExecutionContext ec) throws Exception {                        config.getActionBeanPropertyBinder()                                .bind(ec.getActionBean(), ec.getActionBeanContext(), false);                        return null;                    }                });                // And (again) if an event was supplied, then run the handler                if (event != null) {                    ctx.setLifecycleStage(LifecycleStage.EventHandling);                    ctx.setInterceptors(config.getInterceptors(LifecycleStage.EventHandling));                    ctx.wrap( new Interceptor() {                        public Resolution intercept(ExecutionContext ec) throws Exception {                            return (Resolution) ec.getHandler().invoke(ec.getActionBean());                        }                    });                }                // Put the ActionBean in it's home in the request                actionBean = ctx.getActionBean();                request.setAttribute(binding, actionBean);            }            catch(Exception e) {                throw new StripesJspException("Unabled to prepare ActionBean for JSP Usage",e);            }        }        // If a name was specified, bind the ActionBean into page context        if (getVar() != null) {            pageContext.setAttribute(getVar(), actionBean);        }        return SKIP_BODY;    }