我能够毫无问题地在我的Dropwizard资源中返回JSON响应。但是当我尝试返回一个JSONPObject时,响应仍然返回一个JSON,而不是请求的回调函数中包含的JSON。
@Path("/results")
@Produces(MediaType.APPLICATION_JSON)
public class ExperimentResultResource {
...
@Path("results/{experimentId}")
@GET
@Timed
public Object getResults(
@PathParam("experimentId") @NotEmpty long experimentId,
@QueryParam("callback") String callback) {
....
ExperimentResultRepresentation representation = dataSource.queryResults(query);
if (callback != null) {
JSONPObject obj = new JSONPObject(callback, representation);
return obj;
}
return representation;
}
好消息是,它确实包含了JSON正文中的serializationType
和function
元素,而不是吐出原始的JSON:
{
"value": { // the original JSON body }
"serializationType": null,
"function": "jQuery17209002291325014085_1450240336024"
}
我也尝试在方法上面加上@JSONP
注释。也没有运气。
有什么想法吗?
答案 0 :(得分:2)
解决。
使用org.codehaus.jackson.map.util.JSONPObject
代替protected function selectModule($module = NULL)
{
$this->module = $module;
$this->module = strtolower($this->module);
$this->byID($this->module)->click();
$this->assertEquals($this->url(SOMECONSTANTEXPECTEDURL), $this->byXpath('/html/head/base')->text());
fwrite(STDERR, print_r(__METHOD__."()->$this->module method completed.".PHP_EOL, TRUE));
return $this;
}
。