Передача массив или список @PathVariable - Spring / Java
-
09-12-2019 - |
Вопрос
Я делаю простую «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.lang.LegalstateException: не удалось найти @ pathvariable [firstnameids] в @requestmapping
Решение
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";
}
.
(проверено с пружинной 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";
}
.
(проверено с пружинной MVC 4.1.1)
может делать @PAPTVARIADE id id, затем анализировать строку.
Так что-то вроде:
@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
.