【问题标题】:JSON plus spring mvc 3.2 error 415 (Unsupported Media Type)JSON加spring mvc 3.2错误415(不支持的媒体类型)
【发布时间】:2014-02-16 03:16:43
【问题描述】:

我做错了什么?我尝试使用 Spring mvc 和 JSON。当我尝试调试我的代码时,我正在寻找 javascript 工作但不能工作的控制器。在浏览器中,我收到错误 415 Unsupported Media Type。

脚本:

$(document).ready(function() {
  $('#newSmartphoneForm').submit(function(event) {

      var producer = $('#producer').val();
      var model = $('#model').val();
      var price = $('#price').val();
      var json = { "producer" : producer, "model" : model, "price": price};

    $.ajax({
        url: $("#newSmartphoneForm").attr( "action"),
        data: JSON.stringify(json),
        type: "POST",

        beforeSend: function(xhr) {
            xhr.setRequestHeader("Accept", "application/json");
            xhr.setRequestHeader("Content-Type", "application/json");
        },
        success: function(smartphone) {
            var respContent = "";

            respContent += "<span class='success'>Smartphone was    created: [";
            respContent += smartphone.producer + " : ";
            respContent += smartphone.model + " : " ;
            respContent += smartphone.price + "]</span>";

            $("#sPhoneFromResponse").html(respContent);         
        }
    });

    event.preventDefault();
  });

});  

控制器:

   @RequestMapping(value="/create", method=RequestMethod.POST, 
        produces = MediaType.APPLICATION_JSON_VALUE,
            consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public Smartphone createSmartphone(@RequestBody Smartphone smartphone) {
    return smartphoneService.create(smartphone);
}

【问题讨论】:

  • 您使用的是哪个 Spring MVC 版本?打开您的网络控制台。您是否看到正在发送的 Content-Type 标头?向我们展示您的Smartphone 课程。

标签: java javascript ajax spring-mvc


【解决方案1】:

这可能是因为您在运行时的类路径中没有 Jackson。

错误消息表明服务器由于某种原因无法处理您的 JSON 请求。 JSON 使用称为 消息转换器 的东西转换为 Java 对象。如果您的 Spring XML 配置中有 &lt;mvc:annotation-driven /&gt;(或者您启用了 Java 配置),则会自动注册 JSON 消息转换器。如果没有,则必须注册。

【讨论】:

  • 阿列克谢,你是对的。谢谢你。我添加了 并有所帮助。但是 有不同的种类(springframework.org/schema: cash, mvc, task)。我选择了springframework.org/schema/mvc 并且所有的工作:)
  • 作为未来搜索者的参考:如果 Content-Type 设置为 application/x-www-form-urlencoded,spring mvn 将以相同的方式生成 415。设置为application/json,就像海报所做的那样,是合适的方式。
猜你喜欢
  • 2013-01-13
  • 2013-08-08
  • 2015-02-25
  • 1970-01-01
  • 2023-03-04
  • 2017-05-20
  • 2014-11-04
  • 2021-10-12
  • 2016-09-10
相关资源
最近更新 更多