fillInValidationErrors(context.getValidationErrors(), context.getRequest());
DispatcherHelper.fillInValidationErrors(ctx);
    protected void doPost(final HttpServletRequest request, final HttpServletResponse response)        throws ServletException {        // It sucks that we have to do this here (in the request cycle), but there doesn't        // seem to be a good way to get at the Configuration from the Filter in init()        doOneTimeConfiguration();        ///////////////////////////////////////////////////////////////////////        // Here beings the reall processing of the request!        ///////////////////////////////////////////////////////////////////////        log.trace("Dispatching request to URL: ", request.getRequestURI());        try {            final Configuration config = StripesFilter.getConfiguration();            // First manufacture an ActionBeanContext            final ActionBeanContext context =                    config.getActionBeanContextFactory().getContextInstance(request, response);            context.setServletContext(getServletContext());            // Then setup the ExecutionContext that we'll use to process this request            final ExecutionContext ctx = new ExecutionContext();            ctx.setInterceptors(config.getInterceptors(LifecycleStage.ActionBeanResolution));            ctx.setLifecycleStage(LifecycleStage.ActionBeanResolution);            ctx.setActionBeanContext(context);            // Resolve the ActionBean, and if an interceptor returns a resolution, bail now            Resolution resolution = resolveActionBean(ctx);            if (resolution == null) {                resolution = resolveHandler(ctx);                if (resolution == null) {                    // Find out if we're validating for this event or not                    final boolean doValidate = (ctx.getHandler().getAnnotation(DontValidate.class) == null);                    // Then run binding and validation                    resolution = doBindingAndValidation(ctx, doValidate);                    if (resolution == null) {                        // Then continue on to custom validation                        resolution = doCustomValidation(ctx, doValidate);                        if (resolution == null) {                            // And then validation error handling                            resolution = handleValidationErrors(ctx);                            if (resolution == null) {                                // And finally(ish) invoking of the event handler                                resolution = invokeEventHandler(ctx);                                // If the event produced errors, fill them in                                fillInValidationErrors(context.getValidationErrors(),                                                       context.getRequest());                            }                        }                    }                }            }            // Whatever stage it came from, execute the resolution            if (resolution != null) {                executeResolution(ctx, resolution);            }        }        catch (ServletException se) { throw se; }        catch (RuntimeException re) { throw re; }        catch (InvocationTargetException ite) {            if (ite.getTargetException() instanceof ServletException) {                throw (ServletException) ite.getTargetException();            }            else if (ite.getTargetException() instanceof RuntimeException) {                throw (RuntimeException) ite.getTargetException();            }            else {                throw new StripesServletException                    ("ActionBean execution threw an exception.", ite.getTargetException());            }        }        catch (Exception e) {            throw new StripesServletException("Exception encountered processing request.", e);        }        finally {            restoreActionBean(request);        }    }