2011-10-06 107 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

相关问题