2012-03-08 15 views
33

Robię proste "get" w JBoss/Spring. Chcę, aby klient przekazał mi tablicę liczb całkowitych w adresie URL. Jak ustawić to na serwerze? I pokaż, czy klient powinien wysłać wiadomość?Przekazywanie tablicy lub listy do @ Zmienna_patrzna - wiosna/Java

To właśnie mam teraz.

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

Na kliencie chciałabym przekazać coś

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

Kiedy zrobiłem to pojawia się błąd:

java.lang.IllegalStateException: Could not find @PathVariable [firstNameIds] in @RequestMapping

+0

Możesz musisz użyć formatowania pola New Spring 3 UI http://static.springsource.org/spring/docs/3.0.0.RC1/reference/html/ch05s06.html –

Odpowiedz

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

(testowane z wiosennym MVC 4.0.1)

+0

Czy jersey obsługuje ten wzór? – Priyal85

4

może zrobić @PathVariable identyfikatory ciągów, a następnie zanalizować strunowy.

Więc coś takiego:

@RequestMapping(value="/test/{firstNameIds}", method=RequestMethod.GET) 
@ResponseBody 
public String test(@PathVariable String firstNameIds) 
{ 
    String[] ids = firstNameIds.split(","); 
    return "Dummy"; 
} 

Można by przejść w:

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

jeśli chcesz korzystać z placu nawiasy - []

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

(Testowane z wiosennym MVC 4.1.1)

21

Powinieneś zrobić coś takiego:

Call:

GET http://localhost:8080/public/test/1,2,3,4

Kontroler:

@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

Potwierdzono powyższe prace ze Spring 4.2, prawdopodobnie z większością Spring 4.x. Jest to również najbardziej podobna do Java odpowiedź. – Idcmp

+0

Czy Jersey obsługuje ten wzór? – Priyal85