2015-10-26 115 views
2

我想創建一個頁面,用戶可以看到用戶列表,並且每個人都可以點擊旁邊的複選框來刪除它們。Spring MVC @RequestParam對象列表

在我使用REST API的MVC中,我想發送一個User對象列表給REST API。

@RequestParam註解是否支持那個?

例如:

@RequestMapping(method = RequestMethod.DELETE, value = "/delete") 
    public @ResponseBody Integer delete(
      @RequestParam("users") List<Users> list) { 
     Integer deleteCount = 0; 
     for (User u : list) { 
      if (u != null) { 
       repo.delete(u); 
       ++deleteCount; 
      } 
     } 
     return deleteCount; 
    } 

在MVC客戶端時,網址爲:

List list = new ArrayList<User>(); 
.... 
String url = "http://restapi/delete?users=" + list; 

回答

5

請求參數是字符串字符串的多重映射。您無法將請求參數作爲複雜對象傳遞。

但如果你只是傳遞,應該工作的用戶名 - 看到how to capture multiple parameters using @RequestParam using spring mvc?

@RequestParam("users") List<String> list

但我認爲這將是最好只使用請求主體傳遞信息。

+0

啊,是@RequestBody提供了我正在尋找的功能。 – Kingamere

0

雖然這個問題已經回答,答案已被接受,但我發現使用@RequestBody而不是@RequestParam完全符合您的要求,而且非常簡單。

你會以@RequestBody List<Integer> list結束。 您可以使用HTTP請求調用您的Web服務(POST一定會工作,但DELETE也可以)請求正文:[id1, id2, ...]。如果它不能像那樣工作,請嘗試將consumes = MediaType.APPLICATION_JSON_VALUE)添加到@RequestMapping