尝试使用@RequestBody将数据发布到Spring Controller时,我遇到错误400
我的Ajax方法:
$(document).on('click', 'a[href|=#undo]', function () {
var i = $(this).attr('data-ref');
var uri = '/catalog/uso/undo/' + i;
var data = {"quantidade":$('.qntundo').val()};
console.log(JSON.stringify(data));
$.ajax({
url: uri,
type: 'post',
data: JSON.stringify(data),
dataType: 'json',
headers: {
"Content-Type": "application/json"
},
async: false,
......
数据产生:{“quantdade”:“1”}
我的方法就像:
@RequestMapping(value = "/catalog/uso/undo/{id}",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public
@ResponseBody
String undo(@PathVariable("id") int id,
@RequestBody Integer qnt) {
//some logic here
}
我做错了,是因为我不能将整数用作“身体”吗?或者我需要告诉@RequestBody寻找“quantdade”,如果是这样我该怎么办?
PS:我在我的pom.xml上有Jackson lib也有<mvc:annotation-driven/>
<mvc:default-servlet-handler/>
在我的Spring XML中启用
答案 0 :(得分:1)
我处理了评论中的提示,结果是我改变了方法的注释字段的类型:
@RequestMapping(value = "/catalog/uso/undo/{id}",
method = RequestMethod.POST,
consumes = MediaType.APPLICATION_JSON_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public
@ResponseBody
String undo(@PathVariable("id") int id,
@RequestBody LinkedHashMap qnt) {
现在我有一个LinkedHashMap,我可以访问它来获取值,例如:
Object o = qnt.get("qnt");
其中.get("your json object name here");
我需要一个整数,所以我进行了转换:
int quantidade = Integer.valueOf(String.valueOf(o));
现在我可以在变量quantidade