在 Stripes 中显示来自 handleValidationErrors() 调用的验证错误
Display validation errors in Stripes from a handleValidationErrors() call
我正在将带有表单数据的请求发送到 ProcessorActionBean 进行处理。发生错误,但 ProcessorActionBean 没有 JSP 视图 - 它仅用于处理表单数据 - 所以我通过在 ProcessorActionBean 上实现 ValidationErrorHandler 来捕获错误,并从 handleValidationErrors() 中将其重定向到DisplayerActionBean.
问题是导致方法 运行 的错误在重定向后消失了。我可以在上下文中放置非错误消息,它们将显示在 DisplayerActionBean 的页面中,但错误消息似乎转到 /dev/null.
如何让错误也显示出来?
解决方案原来是:
a) 在 handleValidationErrors() 方法中,使用 FlashScope 将验证错误放在某个地方,它们将在下一个请求之前一直存在:
FlashScope scope = FlashScope.getCurrent(getRequest(), true);
scope.put("your_key",listOfValidationErrors);
b) 在拦截器中(我使用了修改后的 ErrorMessageInterceptor),如果您在 your_key
下发现一些错误,您将它们放入上下文的验证错误中:
ValidationErrors errors = ctx.getActionBeanContext().getValidationErrors();
errors.add(someError.getFieldName(), someError);
(与 ErrorMessageInterceptor 的显着区别在于,您将从列表中得到的每个错误(您将其放入验证错误处理程序中)放入常规验证错误中,而不是全局错误中。这允许它们保留它们相关的字段。)
我正在将带有表单数据的请求发送到 ProcessorActionBean 进行处理。发生错误,但 ProcessorActionBean 没有 JSP 视图 - 它仅用于处理表单数据 - 所以我通过在 ProcessorActionBean 上实现 ValidationErrorHandler 来捕获错误,并从 handleValidationErrors() 中将其重定向到DisplayerActionBean.
问题是导致方法 运行 的错误在重定向后消失了。我可以在上下文中放置非错误消息,它们将显示在 DisplayerActionBean 的页面中,但错误消息似乎转到 /dev/null.
如何让错误也显示出来?
解决方案原来是:
a) 在 handleValidationErrors() 方法中,使用 FlashScope 将验证错误放在某个地方,它们将在下一个请求之前一直存在:
FlashScope scope = FlashScope.getCurrent(getRequest(), true);
scope.put("your_key",listOfValidationErrors);
b) 在拦截器中(我使用了修改后的 ErrorMessageInterceptor),如果您在 your_key
下发现一些错误,您将它们放入上下文的验证错误中:
ValidationErrors errors = ctx.getActionBeanContext().getValidationErrors();
errors.add(someError.getFieldName(), someError);
(与 ErrorMessageInterceptor 的显着区别在于,您将从列表中得到的每个错误(您将其放入验证错误处理程序中)放入常规验证错误中,而不是全局错误中。这允许它们保留它们相关的字段。)