2009-10-08 9 views
8

Dans Spring MVC, j'ai un contrôleur qui écoute toutes les demandes à venir à /my/app/path/controller/*.Obtenez la variable dans le chemin d'un URI

Disons que la demande vient à /my/app/path/controller/blah/blah/blah/1/2/3.

Comment puis-je obtenir la partie /blah/blah/blah/1/2/3, c'est-à-dire la partie qui correspond à la * dans la définition de mappage de gestionnaire.

En d'autres termes, je cherche quelque chose de similaire que pathInfo fait pour servlets, mais pour les contrôleurs.

Répondre

8

Au printemps 3, vous pouvez utiliser l'annotation @ pour saisir de PathVariable parties de l'URL.

Voici un exemple rapide 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

Au printemps 2.5 vous pouvez remplacer toute méthode qui prend une instance de HttpServletRequest comme argument.

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

Au printemps 3, vous pouvez ajouter un argument HttpServletRequest à votre méthode de commande et le ressort se liera automatiquement la demande à elle. par exemple.

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

Dans les deux cas, cet objet est le même objet de demande, vous travaillez avec dans un servlet, y compris la méthode getPathInfo.

Questions connexes