我需要有关如何将拦截器验证和控制器验证与Spring结合使用的解决方案,以便我可以在页面中显示所有错误(来自拦截器和控制器)。
我目前的情况: 当拦截器获取错误时,他会重定向到当前页面并显示错误而无需转到控制器。
我还需要去控制器进行其他验证,如果存在,请带走拦截器错误,因为我需要用户知道页面中的所有错误。
我可以将属性从拦截器传递给控制器或解决方案是什么?
答案 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";
}
}