2012-05-24 15 views
7

HandlerInterceptorsのドキュメントに続きました。新しいバージョンのSpringでは、「設定されたインターセプタは、注釈付きコントローラメソッドで処理されたすべてのリクエストに適用されます」と述べています。Spring 3.1 HandlerInterceptor呼び出されていない

次は、XML設定ファイルである: enter image description here

私はこのように始まる注釈付きのコントローラがあります。私は、コントローラのコードを実行し、URLを要求すると

enter image description here

を、私のインターセプタコードは決して呼び出されません。なぜ誰かが説明してくれますか?

インターセプタコードがある:私は次のドキュメントを使用していた

import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; 

public class DomainNameInterceptor extends HandlerInterceptorAdapter { 
    public boolean preHandle(HttpServletRequest request, 
          HttpServletResponse response, Object handler) 
     throws Exception { 
    System.out.println("Why is this not called?"); 
    return true; 
    } 
} 

Spring Core 3.1.x Documentation

は私がHandlerInterceptorの検索を行なったし、含まれるリンクのドキュメント内の所定の例に従いました。

+5

インターセプタコードを表示できますか。また、スクリーンショットはありません。 – daniel

+1

あなたが従っていたドキュメントをリンクすることもできます。 –

+0

上記のインターセプタコードを追加しました。何か案は? –

答えて

9

<mvc:annotation-driven/>を使用してMVCコンテキストを設定した場合、このカスタム名前空間に基づいてBeanを定義するときに作成されたhandlerMappingが、定義したhandlerMappingをオーバーライドしていると思います。あなたのインターセプタを登録するには良い方法は、インターセプタを定義するために、それは正しいhandlerMappingに登録されます。この方法を<mvc:interceptors>サブタグを使用することです:春3.1にあなたがしなければならない以外上記

<mvc:annotation-driven> 
    <mvc:interceptors> 
     <ref bean="interceptor"/> 
    </mvc:interceptors> 
</mvc:annotation-driven> 
+2

この回答は正しい方向に私を回しましたありがとうございます! WebMvcConfigクラスの@EnableWebMvcを使用してクラスを設定するのを忘れてしまった。以下は、作業を終わった: '@Configuration @EnableWebMvc パブリッククラスWebMvcConfigはWebMvcConfigurerAdapter { \t @Inject \tプライベートConnectionRepository connectionRepositoryを拡張します。 \t @Override \tます。public void addInterceptors(InterceptorRegistryレジストリ){と同等 \t // \t \t registry.addInterceptor(新DomainNameInterceptor()); \t} ' –

+2

はSpring 3.1のの子タグではありませんが、現在はそれ自身のルートタグです。そうでなければ素晴らしい答え。 –

8

Bijuの答えが正しいですかthis:

<mvc:interceptors> 
    <mvc:interceptor> 
    <mvc:mapping path="/pathToIntercept/**" /> 
    <bean class="com.foo.bar.Interceptor" /> 
    </mvc:interceptor> 
</mvc:interceptors> 
関連する問題