【问题标题】:Spring MVC controller throwing 415 error media unsupported for JSON requestSpring MVC 控制器抛出 415 错误媒体不支持 JSON 请求
【发布时间】:2013-01-04 03:45:52
【问题描述】:

我查看了此问题的所有其他答案并尝试了大多数解决方案,但似乎没有任何效果。我正在使用 Dojo.xhrPOST(xhrArgs) 这显然是在 xhrArgs 定义之后出现的。

我的 xhrArgs:

 xhrArgs = 
 {
     headers: 
     { 
       'Accept': 'application/json',
       'Content-Type': 'application/json' 
     },
  'url': thisUrl,
  'postData':requestString,
  'dataType' : 'json',
  'userId': userId,
  'measurementSystem': measurementSystem,
  'systemId': openedSystemId,
  'handleAs': 'text',
  'load': function(data)
     {
         // Replace newlines with nice HTML tags.
         data = data.replace(/\n/g, "<br/>");
         dojo.byId(target).innerHTML = data;
     },
    'error': function(error)
    {
       dojo.byId(target).innerHTML = error;
    }
};

和我的控制器方法签名和注解如下

@RequestMapping(value="/saveSystemConditions", method= RequestMethod.POST,  headers =                                                                               {"content-type=application/json"})
 public String saveSystemConditions(HttpServletRequest request, HttpServletResponse response, @Valid @RequestBody Load load, BindingResult result)

xhrArgs 中显示的我的 requestString 是

"{'systemID':'76', 'system.systemType':'1', 'unitsOfMeasure':'english', 'loadID':'63', 'dispersionInstallationLocation':'Duct+or+AHU', 'humidificationSystemType':'1', 'totalAirVolume':'1200.0', 'desiredDryBulb':'70.0', 'desiredAirMoistureType':'2', 'desiredAirMoisture':'55.0', 'outsideAirConditionsType':'1', 'outsideAirIntakeRateMeasuredAs':'0', 'loadCountry':'United+States', 'outsideAirVolumeMeasuredIn':'0', 'loadState':'Minnesota', 'outsideAirIntakeRate':'25.0', 'loadCity':'Minneapolis', 'elevationFeet':'837.0', 'outsideDryBulb':'-6.8', 'outsideAirMoisture':'57.3', 'userEnteredLoad':'7.43'}"

我明白了 415(不支持的媒体类型)

任何建议将不胜感激。 大卫

【问题讨论】:

  • 你能分享你的 MVC 配置吗?你的类路径中有杰克逊库吗?如果您要返回一个字符串值,您可以删除 'Accept': 'application/json' 标头并尝试。这里的问题看起来应用程序不知道如何将返回值 String 转换为 json 对象。如果你的类路径中有杰克逊库,它会处理这个
  • 我的 pom.xml 中有这个 org.codehaus.jacksonjackson-core-asl1.7.5 compileorg.codehaus.jacksonjackson-mapper-asl1.7.5版本> 编译
  • 我更新到 1.9.11 并更新我的 pom 以反映该版本。仍然得到 415 不受支持的媒体类型。
  • 我的类路径中需要哪些特定的杰克逊库。我有 asl 核心和 asl 映射。我也需要注释吗?或者我具体需要什么?
  • 这里是 pom.xml 的部分 &lt;dependency&gt; ` org.codehaus.jackson` ` jackson-core-asl` ` 1.9.11` ` compile` ` ` ` ` ` org.codehaus.jackson` ` jackson- mapper-asl` ` 1.9.11` ` compile` ` `

标签: ajax json spring-mvc dojo


【解决方案1】:

Spring mvc 映射处理程序的显式声明以及&lt;mvc:annotation-conig /&gt; 存在问题。

【讨论】:

    【解决方案2】:

    在您的应用程序上下文中添加以下行,它将解决问题。

    <mvc:default-servlet-handler/>
    <mvc:annotation-driven />
    

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 1970-01-01
      • 2015-02-25
      • 1970-01-01
      • 2013-08-08
      • 2015-06-17
      • 2023-03-04
      • 2017-05-20
      • 2014-11-04
      相关资源
      最近更新 更多