私のコントローラとモデルクラスは以下のようになります:
@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 フィールドがありませんでした。