在 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 的显着区别在于,您将从列表中得到的每个错误(您将其放入验证错误处理程序中)放入常规验证错误中,而不是全局错误中。这允许它们保留它们相关的字段。)