Jersey QueryParam收到null

时间:2016-09-13 10:25:55

标签: java json jersey jsonp

我正在使用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字符串接收,而是将所有成员分开。

导致这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

问题在于客户。 客户端发送了一个像这样的json:

var thedata = 
{ 
   member1 = "value1",
   member2 = "value2"
}

是什么解决了这样发送它:

var thedata=
[ thedata:
  {
    member1 = "value1",
    member2 = "value2"
  }
]

更改后,Jersey将其识别为请求的参数

答案 1 :(得分:0)

您显然是将null 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);