Spring MVC控制器抛出415错误媒体不支持JSON请求

时间:2013-01-21 04:44:07

标签: ajax json spring-mvc dojo

我已经查看了这个问题的所有其他答案并尝试了大多数解决方案但似乎没有任何效果。我正在使用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(不支持的媒体类型)

我们非常感谢任何建议。 大卫

2 个答案:

答案 0 :(得分:1)

Spring mvc映射处理程序与<mvc:annotation-conig />的显式声明是一个问题。

答案 1 :(得分:1)

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

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