Spring MVC可以捕获异常并在响应中为所有控制器返回BindingResult吗?

时间:2016-08-12 21:55:18

标签: java spring spring-mvc spring-validator

我正在尝试利用我的应用程序服务层上的现有验证框架,在验证失败的情况下抛出ValidationException。这个异常对象包含多个错误,我想利用Spring MVC中的异常处理程序来提取这些错误并将验证消息返回给视图(thymeleaf)。

所以我有两个关于如何做到这一点的问题:

1)我可以从自定义错误对象列表中手动创建BindingResult对象以传递给视图层吗?

2)我是否可以从基本Controller中的处理程序捕获ValidationException(可以从多个方法抛出)并让它拦截响应并返回带有验证消息的视图?或者我是否必须在每个可以抛出它的控制器方法中尝试/捕获此异常并在那里取出绑定结果?

显然,如果所有这些都发生在一个地方会更好 - 如果一个处理程序可以捕获ValidationException并将错误消息注入视图中。但是该方法是否可以访问返回的模型和视图?关于这种架构的任何建议都会非常有用。

1 个答案:

答案 0 :(得分:4)

你检查过谷歌吗?我的第一个打击是 https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc
这将允许您使用正确的模型返回所需异常的视图。

另请查看异常处理程序的spring文档? http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/servlet/HandlerExceptionResolver.html

然后问题就变成了如何检索bindingresult。如果我谷歌它,看起来它可用作请求属性: Spring 3 web request interceptor - how do I get BindingResult?