2012-05-24 11 views
7

नहीं कहा जा रहा है मैंने हैंडलरइंटरसेप्टर्स के लिए प्रलेखन का पालन किया। यह नोट करते हुए कि वसंत के नए संस्करण में: "कॉन्फ़िगर किया गया इंटरसेप्टर एनोटेटेड नियंत्रक विधियों के साथ किए गए सभी अनुरोधों पर लागू होगा"। enter image description hereवसंत 3.1 हैंडलरइंटरसेप्टर

मैं व्याख्या किए गए नियंत्रक इस तरह शुरुआत है:

enter image description here

मैं एक यूआरएल है कि नियंत्रक के कोड निष्पादित अनुरोध करते हैं, मेरी इंटरसेप्टर

निम्नलिखित एक 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: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 सार्वजनिक शून्य addInterceptors (InterceptorRegistry रजिस्ट्री) { \t // के बराबर \t \t registry.addInterceptor (नई DomainNameInterceptor()); \t} ' –

+2

स्प्रिंग 3.1 में का एक बाल टैग नहीं है, लेकिन अब यह स्वयं का रूट टैग है। महान जवाब अन्यथा। –

8

बीजू का जवाब ऊपर सही है, सिवाय इसके वसंत 3.1 में आपको क्या करना है: अपने इंटरसेप्टर रजिस्टर करने के लिए एक बेहतर तरीका, इस तरह से यह सही handlerMapping को पंजीकृत मिल जाएगा इंटरसेप्टर को परिभाषित करने के <mvc:interceptors> subtag उपयोग करने के लिए किया जाएगा यह:

<mvc:interceptors> 
    <mvc:interceptor> 
    <mvc:mapping path="/pathToIntercept/**" /> 
    <bean class="com.foo.bar.Interceptor" /> 
    </mvc:interceptor> 
</mvc:interceptors> 
संबंधित मुद्दे