2009-10-08 7 views
8

के पथ में परिवर्तनीय प्राप्त करें स्प्रिंग एमवीसी में मेरे पास एक नियंत्रक है जो /my/app/path/controller/* पर आने वाले सभी अनुरोधों को सुनता है।एक यूआरआई

मान लें कि अनुरोध /my/app/path/controller/blah/blah/blah/1/2/3 पर आता है।

मैं /blah/blah/blah/1/2/3 भाग कैसे प्राप्त करूं, यानी वह भाग जो हैंडलर मैपिंग परिभाषा में * से मेल खाता है।

दूसरे शब्दों में, मैं कुछ ऐसा ढूंढ रहा हूं जो pathInfo servlets के लिए है लेकिन नियंत्रकों के लिए करता है।

उत्तर

8

वसंत 3 में आप यूआरएल के कुछ हिस्सों को पकड़ने के लिए @ PathVariable एनोटेशन का उपयोग कर सकते हैं।

यहाँ से http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

@RequestMapping(value="/hotels/{hotel}/bookings/{booking}", method=RequestMethod.GET) 
public String getBooking(@PathVariable("hotel") long hotelId, @PathVariable("booking") long bookingId, Model model) { 
    Hotel hotel = hotelService.getHotel(hotelId); 
    Booking booking = hotel.getBooking(bookingId); 
    model.addAttribute("booking", booking); 
    return "booking"; 
} 
1

एक त्वरित उदाहरण स्प्रिंग 2.5 में आप कोई भी तरीका है कि एक तर्क के रूप HttpServletRequest का एक उदाहरण लेता ओवरराइड कर सकते हैं है।

org.springframework.web.servlet.mvc.AbstractController.handleRequest

स्प्रिंग 3 में आप स्वचालित रूप से इसे करने के लिए अनुरोध के लिए बाध्य होगा अपने नियंत्रक विधि और वसंत के लिए एक HttpServletRequest तर्क जोड़ सकते हैं। उदा।

@RequestMapping(method = RequestMethod.GET) 
    public ModelMap doSomething(HttpServletRequest request) { ... } 

या तो मामले में, इस वस्तु एक ही अनुरोध वस्तु आप getPathInfo विधि सहित एक सर्वलेट, में साथ काम करते हैं।