将JSON数组传递给spring MVC Controller

时间:2014-02-17 16:23:25

标签: json spring spring-mvc

我正在尝试将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:客户端发送的请求在语法上是不正确的。

3 个答案:

答案 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

此外,班级名称必须以大写字母开头。