将数组或列表传递给@Pathvariable - Spring/Java

Djo*_*vic 46 java path-variables spring-mvc

我在JBoss/Spring中做了一个简单的'get'.我希望客户端在url中传递一个整数数组.如何在服务器上进行设置?并显示客户端应该发送消息?

这就是我现在所拥有的.

@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET)
@ResponseBody
public String test(@PathVariable List<Integer> firstNameIds)
{
     //What do I do??
     return "Dummy"; 
}
Run Code Online (Sandbox Code Playgroud)

在客户端我想通过类似的东西

http://localhost:8080/public/test/[1,3,4,50]

当我这样做时,我收到一个错误:

java.lang.IllegalStateException:在@RequestMapping中找不到@PathVariable [firstNameIds]

ata*_*man 52

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"; 
}
Run Code Online (Sandbox Code Playgroud)

(使用Spring MVC 4.0.1测试)


小智 33

你应该做这样的事情:

呼叫:

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";
}
Run Code Online (Sandbox Code Playgroud)


한국인*_*한국인 10

如果你想使用方括号 - []

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"; 
}
Run Code Online (Sandbox Code Playgroud)

(使用Spring MVC 4.1.1测试)