我发送带有表单数据的请求到ProcessorActionBean进行处理。发生错误,但ProcessorActionBean没有JSP视图 - 它只是用于处理表单数据 - 所以我通过在ProcessorActionBean上实现ValidationErrorHandler来捕获错误,并且从handleValidationErrors()中,我将它重定向到DisplayerActionBean。
问题是导致该方法运行的错误在重定向后消失。我可以在上下文中放入非错误消息,它们将显示在DisplayerActionBean的页面中,但错误消息似乎转到/ dev / null。
我如何才能显示错误?
答案 0 :(得分:1)
解决方案原来是:
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的显着区别在于,您将在列表中放置的每个错误(您在验证错误处理程序中放入)在常规验证错误中,而不是全局错误。这使他们能够保留他们与之相关的领域。)