2013-08-28 146 views
3

我的項目是baded在Spring MVC和我寫了一個攔截器攔截請求,我想從請求得到parametrts時,下面是我的代碼:Spring MVC的攔截例外

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
    HandlerMethod maControl = (HandlerMethod) handler; 
    Method pmrResolver = (Method) maControl.getMethod(); 
    String methodName = pmrResolver.getName(); 
     .... 
} 

,但現在它拋出一個例外:

java.lang.ClassCastException: org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler cannot be cast to org.springframework.web.method.HandlerMethod 

異常的原因是什麼?

回答

1

它只是意味着handler不是HandlerMethod的實例,因此投射失敗。在投射前檢查如下:

if (handler instanceof HandlerMethod) { 
    HandlerMethod maControl = (HandlerMethod) handler; 
    Method pmrResolver = (Method) maControl.getMethod(); 
    String methodName = pmrResolver.getName(); 
    // ... 
} 
+0

我使用攔截器作爲特權攔截器。我想攔截所有的請求,所以如果'處理程序'不是'HandlerMethod'的實例,我該如何處理這種情況?當'處理程序'是'DefaultServletHttpRequestHandler'的實例時,你能幫助我嗎? – bright