2011-10-06 15 views
2

私は、HttpResponseがリダイレクトであるかどうかに基づいてpostHandle()メソッドで異なることをするSpring MVC HandlerInterceptorAdaptorを記述したいと思います。HttpResponseがSpringインターセプタのリダイレクトであるかどうかを確認する方法はありますか?

これは可能でしょうか?

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 
    } 
} 

EDIT: はこれよりも良い方法があります:Spring MVCのコントローラで

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

答えて

3

通常RedirectViewかで始まる文字列であるたviewName Viewを返すことによってリダイレクトを送信接頭辞はredirect:です。これらのいずれかを簡単に確認できます。

+1

はい、ただし、ビューのタイプを確認することによってのみ可能です。viewName.startsWith。私はより良い方法を望んでいた。 – Nicolai

0

どのような「インターセプタ」の意味ですか、そして/またはどのような「HttpResponse」ですか? HttpResponseに「ステータスコード」または「レスポンスコード」がある場合は、リダイレクトコードを確認するだけです。通常、リダイレクトには301が使用されます。

+0

私の質問を明確にする必要があると思います。質問の本文で述べたように、Springインターセプタ。私はいくつかのサンプルコードで編集します。 – Nicolai