Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用映射作为SpringAjax请求的请求体(使用ExtJS)_Java_Javascript_Ajax_Spring_Extjs - Fatal编程技术网

Java 使用映射作为SpringAjax请求的请求体(使用ExtJS)

Java 使用映射作为SpringAjax请求的请求体(使用ExtJS),java,javascript,ajax,spring,extjs,Java,Javascript,Ajax,Spring,Extjs,我试图使用PUT和Map作为请求参数,从ExtJS向spring3.1.3后端进行AJAX调用。我可以使用List参数成功地进行类似的调用,并传递一个字符串的JavaScript数组,但无法使用JavaScript对象使映射正常工作 换句话说,这是有效的: @RequestMapping(value="stringTest", method=RequestMethod.PUT) public @ResponseBody String stringTest(@RequestBody List<

我试图使用PUT和Map作为请求参数,从ExtJS向spring3.1.3后端进行AJAX调用。我可以使用List参数成功地进行类似的调用,并传递一个字符串的JavaScript数组,但无法使用JavaScript对象使映射正常工作

换句话说,这是有效的:

@RequestMapping(value="stringTest", method=RequestMethod.PUT)
public @ResponseBody String stringTest(@RequestBody List<String> list) {
    //do stuff
    return "OK";
}

Ext.Ajax.request({
    url: "stringTest",
    method: 'PUT',
    jsonData: ['one','two'],
    success: function() { console.log('ok'); },
    failure: function(){ console.log('fail'); }
});
但是,我不能使用这种方法,因为我不能让额外的参数作为URL字符串的一部分传递,这就是最终的结果


所以,问题是,我如何使用Map作为请求参数,只使用jsonData作为请求体?

您使用的是哪个Spring MVC版本?您能否打开浏览器的网络控制台并检查请求中发送的内容?请发布。这是对所有Spring库使用Spring 3.1.3。在Chrome网络选项卡中,请求负载的发送与您期望的完全相同:{1:1,2:2}
@RequestMapping(value="mapTest", method=RequestMethod.PUT)
public @ResponseBody String mapTest(@RequestBody Map<String,String> map) {
    //do stuff
    return "OK";
}

Ext.Ajax.request({
    url: "mapTest",
    method: 'PUT',
    jsonData: {one: 'one', two: 'two'},
    success: function() { console.log('ok'); },
    failure: function(){ console.log('fail'); }
});
var data = {one: 'one', two: 'two'};
Ext.Ajax.request({
    url: "mapTest",
    method: 'PUT',
    jsonData: data,
    params: data,
    success: function() { console.log('ok'); },
    failure: function(){ console.log('fail'); }
});