Получить переменную в пути URI - PullRequest
8 голосов
/ 08 октября 2009

В Spring MVC у меня есть контроллер, который прослушивает все запросы, поступающие на /my/app/path/controller/*.

Допустим, запрос приходит к /my/app/path/controller/blah/blah/blah/1/2/3.

Как получить часть /blah/blah/blah/1/2/3, то есть часть, которая соответствует * в определении отображения обработчика.

Другими словами, я ищу нечто подобное, что pathInfo делает для сервлетов, но для контроллеров.

Ответы [ 2 ]

8 голосов
/ 08 октября 2009

В Spring 3 вы можете использовать аннотацию @ PathVariable для захвата частей URL.

Вот краткий пример из 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 голос
/ 09 октября 2009

В Spring 2.5 вы можете переопределить любой метод, который принимает экземпляр HttpServletRequest в качестве аргумента.

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

В Spring 3 вы можете добавить аргумент HttpServletRequest к вашему методу контроллера, и Spring автоматически свяжет запрос с ним. например,

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

В любом случае этот объект является тем же объектом запроса, с которым вы работаете в сервлете, включая метод getPathInfo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...