Con Spring 3.0, ¿puedo tener una variable de ruta opcional?Con Spring 3.0, ¿puedo crear una variable de ruta opcional?
Por ejemplo
@RequestMapping(value = "/json/{type}", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@PathVariable String type,
@RequestParam("track") String track) {
return new TestBean();
}
Aquí me gustaría /json/abc
o /json
a llamar al mismo método.
Una solución obvia declarar type
como un parámetro de la petición:
@RequestMapping(value = "/json", method = RequestMethod.GET)
public @ResponseBody TestBean testAjax(
HttpServletRequest req,
@RequestParam(value = "type", required = false) String type,
@RequestParam("track") String track) {
return new TestBean();
}
y luego /json?type=abc&track=aa
o /json?track=rr
funcionará
Esta es sin duda una buena manera de hacerlo. – Shamik
@Shamik: Esta es una razón convincente * no * para usar variables de ruta, en mi opinión. La proliferación combinatoria puede irse rápidamente de las manos. – skaffman
En realidad, no porque la ruta no puede ser tan compleja mientras se llena con componentes opcionales. Si tiene más de uno o un máximo de dos elementos de ruta opcionales, considere seriamente cambiar algunos de ellos para solicitar parámetros. –