2016-02-03 60 views
2
@Override 
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
    if (this.logger.isDebugEnabled()) { 
     this.logger.debug(">>> handler: " + handler); 
    } 

    HandlerMethod handlerMethod = (HandlerMethod) handler; 
    Login login = handlerMethod.getMethod().getAnnotation(Login.class); 
} 

我在spring 3.X中有上面的攔截器代碼。 我喜歡在控制器中使用此代碼,在彈簧啓動1.3時,此方法具有@CrossOrigin@RequestMapping方法。 但出現以下錯誤。如何在彈簧啓動1.3中的Interceptor preHandle方法獲得方法信息

如何在彈簧引導1.3中的Interceptor preHandle方法中獲取方法信息?

Caused by: java.lang.ClassCastException: org.springframework.web.servlet.handler.AbstractHandlerMapping$PreFlightHandler cannot be cast to org.springframework.web.method.HandlerMethod 

回答

4

被添加到一個處理請求的部分4.2在4.2之後添加的CORS將再次處理「攔截器」。 因此,您可以添加代碼來檢查對象類型「HandlerMethod」類型的「處理程序」。

例如

if (handler instanceof HandlerMethod) {...} 
+0

當方法有@CrossOrigin時,發生錯誤。並稱兩次「preHandle」。所以我添加了instanceof並且解決了。謝謝。 – uuidcode

相關問題