2010-02-25 8 views
13

मैं ग्राहक से निम्न अनुरोध कर रहा हूँ:स्प्रिंग @RequestMapping से मिलान करने के लिए कैसे @pathVariable युक्त "/" है?

/search/hello%2Fthere/

जहां खोज पद "हैलो/वहाँ" urlencoded किया गया है।

सर्वर मैं निम्नलिखित अनुरोध मानचित्रण का उपयोग कर इस URL से मेल करने के लिए कोशिश कर रहा हूँ पर:


@RequestMapping("/search/{searchTerm}/") 
public Map searchWithSearchTerm(@PathVariable String searchTerm) { 
// more code here 
} 

लेकिन मैं सर्वर पर त्रुटि 404 हो रही है, कारण मैं URL के लिए किसी भी मैच नहीं है। मैंने देखा कि वसंत इसे प्राप्त करने से पहले यूआरएल डीकोड किया गया है। इसलिए मिलान/खोज/हैलो/वहां मिलान करने की कोशिश कर रहा है जिसमें कोई मिलान नहीं है।

मुझे इस समस्या से संबंधित एक जिरा मिला: http://jira.springframework.org/browse/SPR-6780 लेकिन मुझे अभी भी पता नहीं है कि मेरी समस्या का समाधान कैसे करें।

कोई विचार?

धन्यवाद

उत्तर

23

वहाँ (HttpServletResponse के साथ काम कर के बिना) यह करने के लिए कोई अच्छा तरीके हैं। आप कुछ इस तरह कर सकते हैं: request.getServletPath के बजाय

@RequestMapping("/search/**") 
public Map searchWithSearchTerm(HttpServletRequest request) { 
    // Don't repeat a pattern 
    String pattern = (String) 
     request.getAttribute(HandlerMapping.BEST_MATCHING_PATTERN_ATTRIBUTE); 

    String searchTerm = new AntPathMatcher().extractPathWithinPattern(pattern, 
     request.getServletPath()); 

    ... 
} 
+4

मेरे लिए() request.getPathInfo काम() – ljader

+0

AntPathMatcher धागा सुरक्षित है। एक उदाहरण साझा करना बिल्कुल ठीक है। – Cemo

संबंधित मुद्दे