Передача массива или списка в @Pathvariable-Spring/Java
Я делаю простой " get " в JBoss/Spring. Я хочу, чтобы клиент передал мне массив целых чисел в url-адресе. Как это настроить на сервере? И показать, должен ли клиент отправить сообщение?
вот что у меня есть сейчас.
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable List<Integer> firstNameIds)
{
//What do I do??
return "Dummy";
}
на клиенте я хотел бы передать что-то вроде
http://localhost:8080/public/test/[1,3,4,50]
когда я это сделал, я получаю сообщение об ошибке:
java.ленг.IllegalStateException: не удалось найти @PathVariable [firstNameIds] в @RequestMapping
4 ответов
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";
}
(протестировано с Spring MVC 4.0.1)
вы должны сделать что-то вроде этого:
звоните:
GET http://localhost:8080/public/test/1,2,3,4
контроллер:
@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";
}
Если вы хотите использовать квадратные скобки - []
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";
}
(протестировано с Spring MVC 4.1.1)
может сделать @ pathvariable идентификаторы строк, а затем проанализировать строку.
что-то вроде:
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable String firstNameIds)
{
String[] ids = firstNameIds.split(",");
return "Dummy";
}
вы бы пройти в:
http://localhost:8080/public/test/1,3,4,50