在Spring MVC中结合拦截器验证和控制器验证

时间:2016-05-25 15:55:41

标签: spring validation spring-mvc

我需要有关如何将拦截器验证和控制器验证与Spring结合使用的解决方案,以便我可以在页面中显示所有错误(来自拦截器和控制器)。

我目前的情况: 当拦截器获取错误时,他会重定向到当前页面并显示错误而无需转到控制器。

我还需要去控制器进行其他验证,如果存在,请带走拦截器错误,因为我需要用户知道页面中的所有错误。

我可以将属性从拦截器传递给控制器​​或解决方案是什么?

1 个答案:

答案 0 :(得分:0)

我会通过请求属性将验证错误从拦截器传递给控制器​​:

public class FooInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        request.setAttribute("interceptorValidationErrors", "a list of validation errors");

        return super.preHandle(request, response, handler);
    }
}

然后在控制器中读取它们:

@Controller
public class FooController {

    @RequestMapping("/foo")
    String get(HttpServletRequest request) {

        List<ObjectError> interceptorErrors = (List<ObjectError>) request.getAttribute("interceptorValidationErrors");

        return "someViewName";
    }
}