从handleValidationErrors()调用中显示Stripes中的验证错误

时间:2015-11-03 14:31:10

标签: java jsp servlets stripes

我发送带有表单数据的请求到ProcessorActionBean进行处理。发生错误,但ProcessorActionBean没有JSP视图 - 它只是用于处理表单数据 - 所以我通过在ProcessorActionBean上实现ValidationErrorHandler来捕获错误,并且从handleValidationErrors()中,我将它重定向到DisplayerActionBean。

问题是导致该方法运行的错误在重定向后消失。我可以在上下文中放入非错误消息,它们将显示在DisplayerActionBean的页面中,但错误消息似乎转到/ dev / null。

我如何才能显示错误?

1 个答案:

答案 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的显着区别在于,您将在列表中放置的每个错误(您在验证错误处理程序中放入)在常规验证错误中,而不是全局错误。这使他们能够保留他们与之相关的领域。)