I am doing a simple 'get' in JBoss/Spring. I want the client to pass me an array of integers in the url. How do I set that up on the server? And show should the client send the message?
This is what I have right now.
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable List<Integer> firstNameIds)
{
//What do I do??
return "Dummy";
}
On the client I would like to pass something like
http://localhost:8080/public/test/[1,3,4,50]
When I did that I get an error:
java.lang.IllegalStateException: Could not find @PathVariable [firstNameIds] in @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";
}
(tested with Spring MVC 4.0.1)
You should do something like this:
Call:
GET http://localhost:8080/public/test/1,2,3,4
Your controller:
@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";
}
public String test(@PathVariable("firstNameIds") List<Integer> firstNameIds) {
if you want to use Square brackets - []
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";
}
(Tested with Spring MVC 4.1.1)
Could do @PathVariable String ids, then parse the string.
So something like:
@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable String firstNameIds)
{
String[] ids = firstNameIds.split(",");
return "Dummy";
}
You'd pass in:
http://localhost:8080/public/test/1,3,4,50
At first, put this in your code (Add @PathVariable) :
@GetMapping(path="/test/{firstNameIds}",produces = {"application/json"})
public String test(@PathVariable List<String> firstNameIds)
{
return "Dummy";
}
You'd pass in: http://localhost:8080/public/test/Agent,xxx,yyyy
Success story sharing
@GetMapping(value=["""/{id:\d+}"""])
and@GetMapping("""/{ids:\d+[,\d+]+}""")
but now Spring tells me that my-url/123 is ambigous (which isn't the case)...ids.size() == 1
?