我无法通过@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 时,它始终为空。参数偏移量传递正确。
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 方法。
这可能是泽西岛的一个错误还是我错过了什么?