SpringMVC控制器接收JSON字符串时,报错HTTP-415

发布于 2022-09-05 05:25:26 字数 1879 浏览 13 评论 0

试了好长时间没有查出问题在哪

这是我的前端代码

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="/html/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
    function test() {
        var saveDataAry = [];
        var data1 = {"name" : "name1"};
        var data2 = {"name" : "name2"};
        saveDataAry.push(data1);
        saveDataAry.push(data2);
        $.ajax({
            type : "POST",
            url : "/jsonTest",
            dataType : "json",
            contentType : 'application/json',
            data : JSON.stringify(saveDataAry),
            success : function(data) {
                alert(data);
            },
            error : function(data) {
                alert("error");
            }
        });
    }
</script>
</head>
<body>
    <input type="button" onclick="test()" value="JSON">
</body>
</html>

这是我的后端代码

@Controller
public class JsonTest {
    @RequestMapping(value = "jsonTest", method = RequestMethod.POST)
    @ResponseBody
    public String jsonTest(@RequestBody List<Student> s) {
        return "success";
    }
}

class Student {
    private String name;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

浏览器提示我

POST http://localhost:8080/jsonTest 415 (Unsupported Media Type)

后台没有提示,打了个断点也没有进去

maven只依赖了spring-webmvc4.2.5和servlet-api3.1,SpringMVC本身是搭建成功的。
dispatcherservlet.xml里面是配置了<mvc:annotation-driven />

排查了有一段时间了:(
任何回复都能让我不胜感激

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

一绘本一梦想 2022-09-12 05:25:27

我运行了你的代码,没有问题,我猜你应该没有加入 Jackson 的依赖和相关配置:

jackson 的依赖

消息转换器的配置:
消息转换器的配置

南…巷孤猫 2022-09-12 05:25:27

HttpMessageConverter没配吧。

可以加个jackson的依赖,然后MappingJacksonHttpMessageConverter塞到HttpMessageConverter位置上。

回眸一笑 2022-09-12 05:25:27

data : JSON.stringify(saveDataAry),这样的话传过去的是一个字符串是无法转换为 List 的,你可以修改 Controller 的参数为字符串或者将 data 改成{参数名:数组}

倦话 2022-09-12 05:25:27

将 public String jsonTest(@RequestBody List<Student> s) { 中的 @requestBody 删除

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文