有没有办法在 Spring 拦截器中检查 HttpResponse 是否是重定向?

Nic*_*lai 5 java spring-mvc interceptor

我想编写一个 Spring MVC HandlerInterceptorAdaptor,它根据 HttpResponse 是否是重定向在 postHandle() 方法中执行不同的操作。

这可能吗,如果可以,怎么办?

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
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:有没有比这更好的方法:

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

mat*_*t b 4

在 Spring MVC 中,控制器通常通过返回 aViewRedirectView以前缀开头的 String viewName来发送重定向redirect:。您可以轻松检查其中任何一个。

  • 是的,但只能通过检查视图的类型和 viewName.startsWith。我希望有更好的方法。 (2认同)