2009-10-08 54 views
8

Trong Spring MVC Tôi có bộ điều khiển nghe tất cả các yêu cầu đến /my/app/path/controller/*.Nhận biến trong đường dẫn của URI

Giả sử yêu cầu đến /my/app/path/controller/blah/blah/blah/1/2/3.

Làm cách nào để có được phần /blah/blah/blah/1/2/3, tức là phần khớp với * trong định nghĩa ánh xạ trình xử lý.

Nói cách khác, tôi đang tìm kiếm một cái gì đó tương tự mà pathInfo không cho servlet nhưng đối với bộ điều khiển.

Trả lời

8

Trong mùa xuân 3, bạn có thể sử dụng chú thích @ PathVariable để lấy các phần của URL.

Dưới đây là một ví dụ nhanh từ 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

Trong mùa xuân 2,5 bạn có thể ghi đè lên bất kỳ phương pháp mà phải mất một thể hiện của HttpServletRequest như một cuộc tranh cãi.

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

Trong mùa xuân 3 bạn có thể thêm một HttpServletRequest tranh cãi với phương pháp điều khiển của bạn và mùa xuân sẽ tự động ràng buộc yêu cầu đến nó. ví dụ:

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

Trong cả hai trường hợp, đối tượng này là cùng một đối tượng yêu cầu bạn làm việc trong servlet, bao gồm phương thức getPathInfo.

Các vấn đề liên quan