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
    } 
})

しかし、「Unspported MediaType」というエラーが表示されます。applicationContext.xml に Jackson Mapping 設定があり、他のメソッドの @ResponseBody は正常に動作します。

applicationContext.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 データを POST するにはどうすればよいですか? ありがとう。

編集:

リクエストを送信する前に、JSON オブジェクトに変換しました。

$.ajax({ ... データ: JSON.stringify(param) ... });

また、pom.xml に Jackson ライブラリがあり、@ResponseBody に問題はありません。

installDate フィールドがありませんでした。

4

2 に答える 2

0
var param = { deviceId: '1234', ...
$.ajax({ ... data: param, ...

jQuery docsから: " data ...まだ文字列でない場合は、クエリ文字列に変換されます。

したがって、コードの他の場所で文字列に変換paramしないと、サーバーにJSON送信されません。JSONあなたはそれを行うことができます

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