我有串在我的javascript代碼清單,我通過JQuery發送到一個基於REST的服務如下:轉換JSON數組轉換成Java列表<String>與Spring MVC
var ids = [];
$("input:checked").each(function() {
ids.push(this.id);
});
var selectedIds = JSON.stringify(ids);
$.post("/todonotes/tasks/removeTask", selectedIds,function(e) {
}, "json");
正如你所看到的,我轉換一個JavaScript數組放入JSON數組中。現在
,在服務器端,我使用Spring MVC和傑克遜接收並解析輸入JSON:
@RequestMapping(value="/tasks/removeTask", method = RequestMethod.POST)
public @ResponseBody String removeTask(@RequestBody List<String> selectedIds) {
...
}
但我總是得到:
HTTP Status 415 -
--------------------------------------------------------------------------------
type Status report message
description The server refused this request because the request entity is in a format not supported by the requested resource for the requested method.
我試圖刪除引號來自JSON對象,並嘗試使用@RequestParam
而沒有成功。
更新爲每OQJF建議:
我修改後要求如下:
$.post("/todonotes/tasks/removeTask", {selectedIds: selectedIds},function(e) {
}, "json");
現在我的控制器方法被調用,但每個List
元素填充了雙引號和括號。這個列表參數:
[["15", "21"]]
例如,第一元素的樣子:
["15"
我寧願不要解析List
的每個String
元素。
我也嘗試刪除JSON.stringify
轉換,但我的控制器甚至沒有被調用。有了這個,我得到了:
HTTP Status 400 - Required List parameter 'selectedIds' is not present
--------------------------------------------------------------------------------
type Status report
message Required List parameter 'selectedIds' is not present
description The request sent by the client was syntactically incorrect.
更新
我試圖創建一個對象來保存我的ID,如下所示:
public class TaskIdHolder {
private String[] selectedIds;
public String[] getSelectedIds() {
return selectedIds;
}
public void setSelectedIds(String[] selectedIds) {
this.selectedIds = selectedIds;
}
}
然後我修改我的控制器方法簽名:
public @ResponseBody String removeTask(@RequestBody TaskIdHolder selectedIds) {
而我的JSON請求如下所示:
{"selectedIds":["15"]}
我也修改了我的jQuery代碼按安德烈的建議:
var data = JSON.stringify({selectedIds:selectedIds});
$.post("/todonotes/tasks/removeTask", data, function(e) {
凡selectedIds是一個JavaScript陣列。
但現在我得到:
POST http://localhost:8080/todonotes/tasks/removeTask 415 (Unsupported Media Type)
可能是http://stackoverflow.com/questions/11492325/post-json-fails-with-415-unsupported-media-type-spring-3-mvc可以幫助你更新的問題。 – 2013-03-23 16:02:46
在這篇文章中的解決方案之一已爲我工作。謝謝。 – 2013-03-24 18:14:40
很高興知道:) – 2013-03-24 19:57:43