【问题标题】:Posting a JSON to a Spring Controller将 JSON 发布到 Spring 控制器
【发布时间】:2016-07-05 04:58:30
【问题描述】:

我正在学习通过 ajax 将 JSON 对象传递给 Spring Controller。

找到一篇文章,似乎解释了它是如何完成的:http://hmkcode.com/spring-mvc-json-json-to-java/

从那时起,我向控制器添加了一个@RequestMapping:

@RequestMapping(value = "/get-user-list", method = RequestMethod.POST)
    public @ResponseBody String testPost(@RequestBody ResourceNumberJson resourceNumberDtoJson) {
        System.out.println(">>>>>>>>>>>>>>>>>>>>>> I AM CALLED");
        return "111";
    }

然后我正在形成我的 ajax 帖子:

var json = {
    "login" : "login",
    "resource_number" : "111",
    "identifier" : "1111",
    "registrator_number" : "11111111111111"
};
console.log(JSON.stringify(json));
$.ajax({
    type : "POST",
    url : "/get-user-list",
    dataType : "text",
    data : JSON.stringify(json),
    contentType : 'application/json; charset=utf-8',
    mimeType: 'application/json',
    success: function(data) { 
            alert(data.id + " " + data.name);
        },
    error:function(data,status,er) { 
            alert("error: "+data+" status: "+status+" er:"+er);
    }

});

从“get-user-list”页面运行。

当我尝试运行它时,我收到一个 HTTP 415 错误。春季 4,杰克逊 2.4

无法理解我做错了什么。

【问题讨论】:

    标签: java json ajax spring spring-mvc


    【解决方案1】:

    HTTP 415 表示不支持该媒体类型。

    尝试将 @RequestMapping 注释更改为

    @RequestMapping(value = "/get-user-list", 
                    method = RequestMethod.POST, 
                    consumes="application/json")
    

    您还应该考虑使用 RESTClient、Postman 甚至 cURL 等客户端测试您的 REST 服务,以确保它在开始实施 jQuery 客户端之前正常工作。

    【讨论】:

    • 感谢您的回复。我一定会查看 RESTClient。认为我发现了我的问题 - 我错过了 url 之前的斜杠(我认为)。
    • 好的,但这几乎不是 HTTP/415 的原因。
    • URL 变成了“root/get-user-list”,而不是“root/users.../get-user-list”。我想我很喜欢其他人的控制器政策。
    猜你喜欢
    • 2012-10-03
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2012-01-25
    • 1970-01-01
    相关资源
    最近更新 更多