gpt4 book ai didi

java - 问题: Jersey umarshalls parameter QueryParam/PathParam as null

转载 作者:行者123 更新时间:2023-12-01 15:15:50 26 4
gpt4 key购买 nike

我无法使用 Jersey 通过 @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 时,它始终为空。参数offset正确传递。

客户端 JavaScript 示例:

$.ajax({
'url': url,
'type': 'POST',
'dataType': 'json', 'contentType': 'application/json',
'data': {'record': record, 'offset': 123}
})

我以为可能是jQuery的问题,于是尝试把参数改成一些废话 'data': {'record': 'string 而不是 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 方法得到相同的结果。

这可能是 Jersey 的一个错误还是我遗漏了什么?

最佳答案

@FormParam 仅适用于 application/x-www-form-urlencoded 媒体类型。因此,第二种方法(适合您的方法)是接收 JSON 消息实体的正确方法。

关于java - 问题: Jersey umarshalls parameter QueryParam/PathParam as null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11626695/

26 4 0