2012-03-08 1235 views
33

我在JBoss/Spring中做了一個簡單的'get'。我想讓客戶端在URL中傳遞一個整數數組。我如何在服務器上設置它?並顯示客戶端應該發送消息?將數組或列表傳遞給@Pathvariable - Spring/Java

這就是我現在所擁有的。

@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: Could not find @PathVariable [firstNameIds] in @RequestMapping

+0

你可能會需要使用新的Spring 3 UI字段格式http://static.springsource.org/spring/docs/3.0.0.RC1/reference/html/ch05s06.html – 2012-03-08 19:10:56

回答

31
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)

+0

球衣是否支持這種模式? – Priyal85 2017-10-01 17:02:07

4

能幫@PathVariable字符串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 
7

,如果你想使用廣場支架 - []

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)

21

你應該做這樣的事情:

電話:

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"; 
} 
+0

通過Spring 4.2驗證了上述工作,可能是Spring 4.x的大部分工作。這也是最類似Java的答案。 – Idcmp 2015-09-18 00:53:10

+0

澤西支持這種模式嗎? – Priyal85 2017-10-01 17:01:34