2009-10-08 21 views
8

En Spring MVC tengo un controlador que escucha todas las solicitudes que llegan al /my/app/path/controller/*.Obtener la variable en la ruta de un URI

Digamos que una solicitud viene a /my/app/path/controller/blah/blah/blah/1/2/3.

Cómo obtengo la pieza /blah/blah/blah/1/2/3, es decir, la parte que coincide con * en la definición de asignación de controlador.

En otras palabras, estoy buscando algo similar que pathInfo hace para servlets pero para controladores.

Respuesta

8

En Spring 3 puede usar la anotación @ PathVariable para captar partes de la URL.

Aquí está un ejemplo rápido de 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

En la primavera de 2,5 se puede anular cualquier método que toma una instancia de HttpServletRequest como argumento.

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

En primavera 3 se puede añadir un argumento HttpServletRequest a su método de controlador y la primavera se unirá automáticamente la solicitud a la misma. p.

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

En cualquiera de los casos, este objeto es el mismo objeto de solicitud se trabaja con en un servlet, incluyendo el método getPathInfo.

Cuestiones relacionadas