2012-05-24 5 views
7

HandlerInterceptors에 대한 설명서를 따라했습니다. 새 버전의 Spring에서 : "설정된 인터셉터는 주석이 달린 컨트롤러 메소드로 처리되는 모든 요청에 ​​적용됩니다". enter image description hereSpring 3.1 HandlerInterceptor 호출되지 않음

내가 주석이 컨트롤러는 다음과 같이 시작했다 :

enter image description here

내가 컨트롤러의 코드를 실행하는 URL을 요청, 내 인터셉터 다음

XML 구성 파일에 코드가 호출되지 않습니다. 누구든지 이유를 설명해 주시겠습니까?

인터셉터 코드는 다음과 같습니다 나는 다음과 같은 문서를 사용했다

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을 겹쳐 쓰고 있다고 생각합니다. 스프링 3.1에서 당신이 할 일은 제외

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

이 답변은 올바른 방향으로 나를 돌 렸습니다. 감사합니다! 내 WebMvcConfig 클래스에서 @EnableWebMvc를 사용하여 Class를 설정하는 것을 잊어 버렸습니다. 다음 결국 작업 :'@Configuration @EnableWebMvc WebMvcConfig이 WebMvcConfigurerAdapter { \t @Inject \t 개인 ConnectionRepository connectionRepository를 확장 공용 클래스; \t @Override \t 공개 무효 addInterceptors (InterceptorRegistry 레지스트리) { 상당 \t \t \t // registry.addInterceptor (새 DomainNameInterceptor()); \t}' –

+2

는 Spring 3.1에서 의 하위 태그가 아니지만 이제는 자체 루트 태그입니다. 그렇지 않으면 위대한 대답. –

8

비주의 대답은 위의 올바른 : 당신의 인터셉터를 등록하는 더 좋은 방법은, 인터셉터를 정의하기 위해 <mvc:interceptors> 하위 태그를 사용하는 것이 올바른 모든 HandlerMapping에 등록 된 얻을 것이다이 방법이 될 것입니다 this :

<mvc:interceptors> 
    <mvc:interceptor> 
    <mvc:mapping path="/pathToIntercept/**" /> 
    <bean class="com.foo.bar.Interceptor" /> 
    </mvc:interceptor> 
</mvc:interceptors> 
관련 문제