Jersey QueryParam 被接收为 null
Jersey QueryParam is received as null
我正在使用 dropwizard 创建 Jersey Web 服务。客户端正在使用 JsonP
跨域 ajax 消息。
我得到了一个如下所示的资源方法:
@Path("/addUser")
@GET
@UnitOfWork
public String registerPortalUser(@Context HttpServletRequest req, @QueryParam("callback") String callback, @QueryParam("thedata") MyClass recordData) throws Throwable
{ .. }
我得到了预期的回调参数,但是我没有收到应该注入到 MyClass
成员的单个 Json 字符串,而是收到了很多参数,这些参数都是 MyClass成员名称及其值。意思是,我不是将所有内容都作为单个 Json 字符串接收,而是将所有成员分开。
什么会导致这种情况?
您显然是在向服务器发送一个空的 MyClass 对象。您的客户端代码可能类似于
MyClass myC = new MyClass();
//populate MyClass fields
WebTarget target = client.target(UriBuilder.fromUri("http://localhost:8088/YourWebApp").build());
String res =(String) target.path("addUser").queryParam("thedata", myC).request().accept(MediaType.TEXT_PLAIN).get(String.class);
问题出在客户端。
客户端发送了一个 json 这样的:
var thedata =
{
member1 = "value1",
member2 = "value2"
}
解决方法是这样发送:
var thedata=
[ thedata:
{
member1 = "value1",
member2 = "value2"
}
]
更改后,Jersey 将其识别为请求的参数
我正在使用 dropwizard 创建 Jersey Web 服务。客户端正在使用 JsonP
跨域 ajax 消息。
我得到了一个如下所示的资源方法:
@Path("/addUser")
@GET
@UnitOfWork
public String registerPortalUser(@Context HttpServletRequest req, @QueryParam("callback") String callback, @QueryParam("thedata") MyClass recordData) throws Throwable
{ .. }
我得到了预期的回调参数,但是我没有收到应该注入到 MyClass
成员的单个 Json 字符串,而是收到了很多参数,这些参数都是 MyClass成员名称及其值。意思是,我不是将所有内容都作为单个 Json 字符串接收,而是将所有成员分开。
什么会导致这种情况?
您显然是在向服务器发送一个空的 MyClass 对象。您的客户端代码可能类似于
MyClass myC = new MyClass();
//populate MyClass fields
WebTarget target = client.target(UriBuilder.fromUri("http://localhost:8088/YourWebApp").build());
String res =(String) target.path("addUser").queryParam("thedata", myC).request().accept(MediaType.TEXT_PLAIN).get(String.class);
问题出在客户端。 客户端发送了一个 json 这样的:
var thedata =
{
member1 = "value1",
member2 = "value2"
}
解决方法是这样发送:
var thedata=
[ thedata:
{
member1 = "value1",
member2 = "value2"
}
]
更改后,Jersey 将其识别为请求的参数