0

我是 ajax 和 JSON(以及一般编程)的新手,但我想做的是使用 ajax 将我的 JSON 对象转换为 Java 对象,但我不断收到“Required LocationsList parameter 'myJSONObject' is not present” . 我在这里期待太多的ajax吗?有人告诉我 LocationsList 中的字段会自动填写。

阿贾克斯的东西:

function getAffectedFlowsForLocation(myJSONObject) {
//JSON.stringify(myJSONObject) looks like {"stations":["111", "222"],"stationGroups":["333"],"others":[]}

    $.ajax({
    url : baseUrl + "/locations/getFlowsAffectedByDelete",
    type : "GET",
    data : "{'myJSONObject':'" + JSON.stringify(myJSONObject)+ "'}",
    dataType : "json",
    contentType: 'application/json',
    async : false,
    success:function(data){
        displayAffectedFlows(data);
    },
    error : function(){
        // error is handled by global ajaxError()
        success = false;
    }
});

}

在控制器中:

@RequestMapping(value = "/getFlowsAffectedByDelete", method = RequestMethod.GET)
@ResponseBody
public List<Map<String, String>> getFlowsAffectedByDelete(@RequestParam(value = "myJSONObject") final LocationsList locations) {
    //returns a List<Map<String, String>>
}

我的位置列表:

public class LocationsList {

private List<Integer> stations;

private List<Integer> stationGroups;

private List<Integer> others;

//Getters and setters
}

让我知道是否有任何需要澄清的地方。

谢谢

4

2 回答 2

1

use

   @RequestBody LocationsList locations

instead of

   @RequestParam
于 2013-09-26T12:07:54.743 回答
0

我认为您应该更改使用该data属性的方式。从jQuery 文档

要发送到服务器的数据。如果还不是字符串,则将其转换为查询字符串。它附加到 GET 请求的 url。

所以,它应该是一个对象:

data : { myJSONObject : JSON.stringify(myJSONObject) },

或字符串:

data : "myJSONObject=" + JSON.stringify(myJSONObject),
于 2013-09-26T15:01:55.703 回答