我正在使用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字符串接收,而是将所有成员分开。
导致这种情况的原因是什么?
答案 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);