我正在尝试将JSON数组传递给spring MVC Controller,如下所示:
var myList = new Array();
data._children.forEach( function (d) {
myList.push( {NAME: d.name, TYPE: d.TYPE, FDATE: d.FDATE } );
});
$.post("/ListRequest", {myList: myList});
控制器看起来像这样:
@RequestMapping(value="/ListRequest", method = RequestMethod.POST)
public void ListRequest(@RequestParam("myList") myList tempmyList )
{
System.out.println(tempmyList);
}
myList定义的类:
public class MyList {
private List<ListT> ListT;
public List<ListT> getListT() {
return ListT;
}
public void setListT(List<ListT> listT) {
ListT = listT;
}
}
ListT类:
public class ListT {
private String NAME;
private String TYPE;
private Long FDATE; ...
我一直收到这个错误: HTTP状态400 - 必需的myList参数'myList'不存在
也试过这个请求:
$.ajax({
type: "post",
url: "ListRequest", //your valid url
contentType: "application/json", //this is required for spring 3 - ajax to work (at least for me)
data: JSON.stringify(myList), //json object or array of json objects
success: function(result) {
//do nothing
},
error: function(e){
alert('failure');
}
但是得到这个错误:JBWEB000120:客户端发送的请求在语法上是不正确的。
答案 0 :(得分:2)
尝试将此添加到您的ajax调用它应该修复不支持的响应:
headers : {
'Accept' : 'application/json',
'Content-Type' : 'application/json'
},
这是一个适合我的ajax调用的完整示例:
$.ajax({
dataType : "json",
url : this.baseurl + "/dataList",
headers : {
'Accept' : 'application/json',
'Content-Type' : 'application/json'
},
data : JSON.stringify(params),
type : 'POST',
success : function(data) {
self.displayResults(data);
},
error : function(jqXHR,textStatus,errorThrown ){
showPopupError('Error','error : ' + textStatus, 'ok');
}
});
答案 1 :(得分:0)
即使我遇到同样的问题。 我的客户端请求是正确的,并生成了正确的json文件。 但我仍然得到同样的错误。
我在pojo类中使用@JsonIgnoreProperties(ignoreUnknown = true)解决了这个错误。
参考此链接。 Spring MVC : The request sent by the client was syntactically incorrect
答案 2 :(得分:-1)
你可以尝试
@RequestParam(“myList”)myList tempmyList
@Param myList tempmyList
此外,班级名称必须以大写字母开头。