我在 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.IllegalStateException:在@RequestMapping 中找不到@PathVariable [firstNameIds]
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";
}
public String test(@PathVariable("firstNameIds") List<Integer> firstNameIds) {
如果你想使用方括号 - []
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 String ids,然后解析字符串。
所以像:
@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
首先,把它放在你的代码中(添加@PathVariable):
@GetMapping(path="/test/{firstNameIds}",produces = {"application/json"})
public String test(@PathVariable List<String> firstNameIds)
{
return "Dummy";
}
你会传入:http://localhost:8080/public/test/Agent,xxx,yyyy
@GetMapping(value=["""/{id:\d+}"""])
和@GetMapping("""/{ids:\d+[,\d+]+}""")
那样做,但现在 Spring 告诉我 my-url/123 是模棱两可的(事实并非如此)......ids.size() == 1
?