Pasando una matriz o lista a @pathVariable - Spring / Java
-
09-12-2019 - |
Pregunta
Estoy haciendo un simple 'Obtener' en JBoss / Spring.Quiero que el cliente me pase una variedad de enteros en la URL.¿Cómo lo configuro en el servidor?Y mostrar si el cliente envía el mensaje?
Esto es lo que tengo ahora mismo.
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable List<Integer> firstNameIds)
{
//What do I do??
return "Dummy";
}
en el cliente, me gustaría pasar algo como
http://localhost:8080/public/test/[1,3,4,50]
Cuando hice que recibo un error:
java.lang.illegalstateException: No se pudo encontrar @PathVariable [Firstnameids] en @RequestMapping
Solución
GET http://localhost:8080/public/test/1,2,3,4
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable String[] firstNameIds)
{
// firstNameIds: [1,2,3,4]
return "Dummy";
}
(probado con la primavera MVC 4.0.1)
Otros consejos
Debes hacer algo como esto:
Llamada:
GET http://localhost:8080/public/test/1,2,3,4
su controlador:
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable List<Integer> firstNameIds) {
//Example: pring your params
for(Integer param : firstNameIds) {
System.out.println("id: " + param);
}
return "Dummy";
}
Si desea utilizar corchetes - []
DELETE http://localhost:8080/public/test/[1,2,3,4]
@RequestMapping(value="/test/[{firstNameIds}]", method=RequestMethod.DELETE)
@ResponseBody
public String test(@PathVariable String[] firstNameIds)
{
// firstNameIds: [1,2,3,4]
return "Dummy";
}
(probado con la primavera MVC 4.1.1)
Podría hacer @PathVariable String IDS, luego analizar la cadena.
así que algo así como:
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable String firstNameIds)
{
String[] ids = firstNameIds.split(",");
return "Dummy";
}
pasarías:
http://localhost:8080/public/test/1,3,4,50