0

我的控制器和模型类如下所示:

@Controller
@RequestMapping("/apkinfo")
public class ApkInfoController {


  public @ResponseBody String registerApk(@RequestBody ApkInfoReq req){
         //Do something
  }
}

public class ApkInfo implements Serializable {

     private String deviceId;
     private List<ApkInfo> apkinfo;

     //gettters and setters
}

public class ApkInfo  implements Serializable {

     private String appName;
     private String packageName;
     private String version;
     private Date installDate;
}

然后我尝试使用 jQuery Ajax 将数据发布到服务器。

var param = {
   deviceId: '1234',
   apkinfo: [
      {appName:'a', packageName:'a.a', version: '1', installDate:"2013-05-03 10:00:00"},
      {appName:'b', packageName:'a.b', version: '2', installDate:"2013-05-03 10:00:00"} 
   ]
}

$.ajax({
    type: 'POST',
    url : 'to_my_server_url',
    contentType: 'application/json',
    dataType: 'json',
    data: param,
    error: function(){},
    success: function(data){
        //do something
    } 
})

但我收到错误“未支持的 MediaType”。我的 applicationContext.xml 中有 Jackson Mapping 设置,其他方法的 @ResponseBody 工作正常。

应用程序上下文.xml

<context:component-scan base-package: "xx.xx.xxxxx.xx";
<contex:annotation-config />
<mvc:annotation-driven />

<bean id="jacksonMappingConverter"    class="org.springframework.htttp.converter.json.MappingJacksonHttpMessageConverter">

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
              <ref bean ="jacksonMappingConverter" />
        </list>
   </property>
</bean>

如何发布 JOSN 数据?谢谢。

编辑:

在发送请求之前,我将其转换为 JSON 对象:

$.ajax({ ... 数据:JSON.stringify(param) ... });

我的 pom.xml 中有 Jackson 库,@ResponseBody 没有问题。

我错过了 installDate 字段。

4

2 回答 2

0

你的类路径中有杰克逊罐子吗?您还可以在您的方法处理程序上添加 @RequestMapping(value="/mapping", consumes=MediaType.APPLICATION_JSON_VALUE) 请参阅此示例 - MappingController

于 2013-05-03T05:55:53.003 回答
0
var param = { deviceId: '1234', ...
$.ajax({ ... data: param, ...

来自jQuery 文档:“数据......它被转换为查询字符串,如果还不是字符串。

因此,如果您不在代码中的其他位置转换paramJSON字符串,那么您就不会发送JSON到服务器。你可以这样做

data: JSON.stringify(param)
于 2013-05-03T12:48:23.093 回答