Java 使用映射作为SpringAjax请求的请求体(使用ExtJS)
我试图使用PUT和Map作为请求参数,从ExtJS向spring3.1.3后端进行AJAX调用。我可以使用List参数成功地进行类似的调用,并传递一个字符串的JavaScript数组,但无法使用JavaScript对象使映射正常工作 换句话说,这是有效的: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<
@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'); }
});