web-dev-qa-db-ja.com

配列またはリストを@Pathvariableに渡す-Spring / Java

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

クライアントでは、次のようなものを渡したい

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

私がそれをしたとき、エラーが発生します:

Java.lang.IllegalStateException:@RequestMappingで@PathVariable [firstNameIds]が見つかりませんでした

46
Djokovic
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でテスト済み)

51
atamanroman

次のようにする必要があります。

呼び出し:

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";
}
32

角かっこを使用する場合-[]

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でテスト済み)

10
한국인

@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
3
dardo