2012-09-03 21 views
11

स्प्रिंग एमवीसी नियंत्रक में, मैं @RequestMapping में परिभाषित चर के मान प्राप्त करने के लिए @PathVariable का उपयोग करके पथ चर प्राप्त कर सकता हूं। मैं एक इंटरसेप्टर में चर का मूल्य कैसे प्राप्त कर सकता हूं?वसंत एमवीसी 3: एक इंटरसेप्टर में पथ चर कैसे प्राप्त करें?

बहुत बहुत धन्यवाद!

उत्तर

4

वसंत मंचों में thread है, जहां कोई कहता है, कोई "आसान तरीका" नहीं है, इसलिए मुझे लगता है कि आपको इसे प्राप्त करने के लिए यूआरएल को पार्स करना होगा।

+1

वास्तव में ऊपर @ashario द्वारा जवाब (http://stackoverflow.com/a/23468496/35274) दिखाता है कि यह किया जा सकता है। – Philippe

3
लगभग 1 साल बहुत देर हो चुकी

, लेकिन:

  String[] requestMappingParams = ((HandlerMethod)handler).getMethodAnnotation(RequestMapping.class).params() 

     for (String value : requestMappingParams) {... 

मदद करनी चाहिए

+0

यह RequestParams को पुनर्प्राप्त करने के लिए उपयोगी प्रतीत होता है लेकिन मुझे नहीं लगता कि इस दृष्टिकोण – chrismarx

42

धागा पाओ से जुड़े preHandle() विधि में मेरे लिए एक इलाज काम किया

आप निकाल सकते हैं निम्नलिखित कोड

Map pathVariables = (Map) request.getAttribute(HandlerMapping.URI_TEMPLATE_VARIABLES_ATTRIBUTE); 
+6

और फिर स्ट्रिंग मान = (स्ट्रिंग) pathVariables.get ("yourPathVarName") के साथ PathVariables का मान कैसे प्राप्त करें; यह है। इसे – spiderman

+1

परफेक्ट के रूप में चिह्नित किया जाना चाहिए, उदाहरण कोड '@ कंट्रोलर एडवाइस' और '@ अपवाद हैंडलर' के साथ भी काम करता है। धन्यवाद – Andreas

+1

यह सही उत्तर के रूप में क्यों चिह्नित नहीं है ?! – Philippe

0

क्या यह है जो विभिन्न PathVariables चला रहा है आप क्या देख रहे हैं?

ConfigClass extends WebMvcConfigurerAdapter { 
@Override 
    public void addInterceptors(InterceptorRegistry registry) { 
     registry.addInterceptor(new HandlerInterceptor() { 
      @Override 
      public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { 
       System.out.println("Request Url: " + request.getRequestURL().toString()+ "?" + request.getQueryString()); 
       return true; 
      } 
      @Override 
      public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { 
       // TODO Auto-generated method stub 
      } 
      @Override 
      public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { 
       // TODO Auto-generated method stub 
      } 
     }); 
     super.addInterceptors(registry); 
    } 
}