1. ホーム
  2. ajax

[解決済み] POST JSONが415 Unsupported media typeで失敗する、Spring 3 mvc

2022-04-13 13:36:21

質問

サーブレットにPOSTリクエストを送ろうとしています。リクエストは、このようにjQuery経由で送信されます。

var productCategory = new Object();
productCategory.idProductCategory = 1;
productCategory.description = "Descrizione2";
newCategory(productCategory);

ここで、newCategoryは

function newCategory(productCategory)
{
  $.postJSON("ajax/newproductcategory", productCategory, function(
      idProductCategory)
  {
    console.debug("Inserted: " + idProductCategory);
  });
}

で、postJSONは

$.postJSON = function(url, data, callback) {
    return jQuery.ajax({
    'type': 'POST',
    'url': url,
    'contentType': 'application/json',
    'data': JSON.stringify(data),
    'dataType': 'json',
    'success': callback
    });
};

firebugで、JSONが正しく送信されていることが確認できます。

{"idProductCategory":1,"description":"Descrizione2"}

しかし、415 Unsupported media type が表示されます。Spring mvc コントローラに署名があります。

    @RequestMapping(value = "/ajax/newproductcategory", method = RequestMethod.POST)
public @ResponseBody
Integer newProductCategory(HttpServletRequest request,
        @RequestBody ProductCategory productCategory)

何日か前はうまくいっていたのに、今はうまくいきません。必要であれば、もっとコードを表示します。 ありがとうございます。

解決方法は?

なんとか動作するようになりました。間違っていたら教えてください。 シリアライズ/デシリアライズの方法を1つだけ使用しました。これに関するすべてのアノテーションを削除しました ( @JSONSerialize@JSONDeserialize に登録されたシリアライザーとデシリアライザーが使用されます。 CustomObjectMapper クラスがあります。 この挙動を説明した記事は見つかりませんでしたが、私はこの方法で解決しました。お役に立てれば幸いです。