Pregunta

Por ejemplo, con el URL

foo.com/bar/99

99 estará disponible directamente a un método en el controlador como un argumento. El controlador está asignada a / bar

Para cualquier persona familiarizada con ASP.NET MVC o Django, esto sería similar a routes.MapRoute en el primero y el uso de (? P \ d +) en urlpatterns en el segundo.

Sería posible procesar los datos de la solicitud objeto Http directamente a conseguir esto, pero me gustaría saber si Spring MVC ha incorporado en el apoyo a esta (en particular la versión 2.5).

¿Fue útil?

Solución

No, la primavera no admite esta fuera de la caja. Puede, sin embargo, mapa de ruta con el método nombre usando @ RequestMapping y InternalPathMethodNameResolver apropiadamente configurado:

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

Vas a tener que especificar prefix para InternalPathMethodNameResolver como "hacer" de los anteriores para trabajar desde nombres de los métodos no pueden comenzar con el dígito. Si se va a utilizar "foo.com/bar/baz" como URL y llame a su método de baz, sería necesaria ninguna configuración adicional.

Si no desea utilizar la asignación de nombre de método, conseguir '99' como parámetro es tan fácil como coger desde request.getPathInfo() en su método.

Otros consejos

Para cualquier persona utilizando Spring 3, he aprendido esto se puede hacer uso de la nueva anotación @PathVairable

Aquí está el ejemplo de http: // Blog .springsource.com / 2009/03/08 / reposo dentro de muelle-3-mvc /

@RequestMapping("/hotels/{hotelId}")
public String getHotel(@PathVariable String hotelId, Model model) {
    List<Hotel> hotels = hotelService.getHotels();
    model.addAttribute("hotels", hotels);
    return "hotels";
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top