我无法通过@FormParam
通过泽西传递我自己的对象。它始终为空。我有这样的方法:
@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(错误请求)。我也检查了请求的正文,看起来没问题。
但是当我将方法改为这样时:
public SearchResult search(MyObject record) { ... }
相应的客户端脚本:
$.ajax({
'url': url,
'type': 'POST',
'dataType': 'json', 'contentType': 'application/json',
'data': JSON.stringify(record)
})
正确获取MyObject。
我尝试使用相同结果的GET方法。
它可能是泽西岛的一个错误,还是我错过了什么?
答案 0 :(得分:1)
@FormParam仅适用于application / x-www-form-urlencoded媒体类型。因此,第二种方法(适合您的方法)是接收JSON消息实体的正确方法。