2016-05-25 49 views
1

我需要解決方案,以便如何將攔截器驗證和控制器驗證與Spring結合起來,以便在頁面中顯示所有錯誤(來自攔截器和控制器)。在Spring MVC中結合了攔截器驗證和控制器驗證

我當前的場景: 當攔截器獲取錯誤,他重定向到當前頁面,並顯示錯誤,而不去控制器。

我需要去控制器也做其他驗證,並採取我攔截器錯誤,如果存在,因爲我需要用戶知道頁面中的所有錯誤。

我可以將攔截器的屬性傳遞給控制器​​嗎?解決方案是什麼?

回答

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"; 
    } 
} 
+0

給我空指針異常時,試圖通過(request.getAttribute(「interceptorValidationErrors」)來訪問控制器中的屬性,請求對象被填充但沒有interceptorValidationErrors屬性。 –

+0

@MohammedMostafa是你實際調用的攔截器嗎?你需要配置sprin g –

+0

你說得對,但沒有達到request.setattribute,當我改變了攔截器擴展HandlerInterceptorAdapter來實現HandlerInterceptor它的工作正常(我不知道爲什麼!) –