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
The @PathVariable annotation is used to extract the value of the template variables and assign their value to a method variable. A Spring controller method to process above example is shown below; @RequestMapping("/users/{userid}", method=RequestMethod.
@RequestParam and @PathVariable can both be used to extract values from the request URI, but they are a bit different.
@PathParam: it is used to inject the value of named URI path parameters that were defined in @Path expression. @Pathvariable: This annotation is used to handle template variables in the request URI mapping ,and used them as method parameters.
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"; }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With