2011-10-06 126 views
2

我想寫一個Spring MVC HandlerInterceptorAdaptor,它根據HttpResponse是否重定向在postHandle()方法中做不同的事情。有沒有辦法在Spring攔截器中檢查HttpResponse是否是重定向?

這是可能的,如果是的話如何?

public class MenuInterceptor extends HandlerInterceptorAdapter { 
public final void postHandle(HttpServletRequest request, 
         HttpServletResponse response, 
         Object handler, 
         ModelAndView modelAndView) throws SystemException { 
    if (redirect) { 
     // do somethnig 
    } else { 
     // do something else 
    } 
} 

編輯: 難道還有比這更好的辦法:

if (modelAndView.getView() instanceof RedirectView || modelAndView.getViewName().startsWith("redirect:")) { 
    // Do something 
} else { 
    // Do something else 
} 

回答

3

在Spring MVC中,控制器通常通過返回View這是一個RedirectView或與開頭的字符串的viewName發送重定向前綴爲redirect:。您可以輕鬆檢查其中任何一種。

+1

是的,但只能通過檢查視圖的類型和viewName.startsWith。我希望有更好的辦法。 – Nicolai

0

你的意思是什麼樣的「攔截器」,和/或什麼樣的「HttpResponse」?如果您的HttpResponse具有「狀態代碼」或「響應代碼」,則只需檢查重定向代碼。通常,301用於重定向。

+0

猜猜我需要澄清我的問題。正如在問題的主體中提到的一個彈簧攔截器。我將用一些示例代碼進行編輯。 – Nicolai

相關問題