Question

Par exemple, l'URL

foo.com/bar/99

99 seront disponibles directement à une méthode dans le contrôleur comme un argument. Le dispositif de commande est mis en correspondance / bar

Pour ceux qui sont familiers avec ASP.NET MVC ou Django, ce serait semblable à routes.MapRoute dans l'ancienne et en utilisant (? P \ d +) en urlpatterns dans celle-ci.

Il serait possible de traiter les données dans le Http objet Request directement pour obtenir cela, mais je voudrais savoir si Spring MVC a un support intégré pour cette (en particulier la version 2.5).

Était-ce utile?

La solution

Non, Spring ne supporte pas hors de la boîte. Vous pouvez, cependant, le chemin de la carte à la méthode nom en utilisant @ RequestMapping et InternalPathMethodNameResolver configuré de manière appropriée:

@Controller
@RequestMapping("/bar/*")
public class MyController {
  ...
  public String do99(HttpServletRequest request) {
    ...
  }
}

Vous devez spécifier prefix pour InternalPathMethodNameResolver comme « faire » pour ce qui précède pour travailler puisque les noms de méthode ne peut pas commencer par le chiffre. Si vous deviez utiliser « foo.com/bar/baz » comme URL et appelez votre méthode baz, aucune configuration supplémentaire serait nécessaire.

Si vous ne voulez pas utiliser le mappage de nom de la méthode, obtenir « 99 » en tant que paramètre est aussi facile que le saisissant de request.getPathInfo() dans votre méthode.

Autres conseils

Pour toute personne qui utilise Spring 3, j'ai appris cela peut être fait en utilisant la nouvelle annotation @PathVairable

Voici l'exemple de http: // Blog .springsource.com / 2009/03/08 / repos en ressort 3-mvc /

@RequestMapping("/hotels/{hotelId}")
public String getHotel(@PathVariable String hotelId, Model model) {
    List<Hotel> hotels = hotelService.getHotels();
    model.addAttribute("hotels", hotels);
    return "hotels";
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top