自分のオブジェクトを@FormParam
Jersey で渡すことができません。常にヌルです。私はこのような方法を持っています:
@POST
@Path("search")
@Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public SearchResult search(
@FormParam("record") MyObject record,
@FormParam("offset") Integer offset,
...) {
...
}
MyObject を渡そうとすると、常に null になります。パラメータ オフセットは正しく渡されます。
説明のための JavaScript のクライアント側:
$.ajax({
'url': url,
'type': 'POST',
'dataType': 'json', 'contentType': 'application/json',
'data': {'record': record, 'offset': 123}
})
jQueryに問題があるのではないかと思い、パラメータをナンセンスに変更しようとした'data': {'record': 'string instead of json', 'offset': 123}
ところ、400(Bad Request)になりました。リクエストの本文も確認しましたが、問題ないようでした。
しかし、メソッドを次のように変更すると、次のようになります。
public SearchResult search(MyObject record) { ... }
それに応じてクライアントスクリプト:
$.ajax({
'url': url,
'type': 'POST',
'dataType': 'json', 'contentType': 'application/json',
'data': JSON.stringify(record)
})
MyObject は正しく取得されます。
同じ結果でGETメソッドを使用しようとしました。
ジャージーのバグである可能性はありますか、それとも何か不足していますか?