我目前正在使用Jersey返回JSON。我该如何返回JSONP?例如,我当前的RESTful方法是:
@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Order> getOrders() {
return OrderRepository.getOrders();
}
我想在Tomcat上部署(不想要求使用GlassFish)。我对Jersey的唯一依赖是:
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.9.1</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.9.1</version>
</dependency>
还需要哪些其他依赖项?代码将如何变化?
感谢。
纳雷什
答案 0 :(得分:9)
查看Jersey中的JSONP示例(尤其是ChangeList资源)(您可以下载整个项目here)。
你基本上需要做的是这样的事情:
@GET
@Produces(MediaType.APPLICATION_JSON)
public JSONWithPadding getOrders() {
return new JSONWithPadding(new GenericEntity<List<Order>>(OrderRepository.getOrders()){});
}
答案 1 :(得分:6)
正如@s_t_e_v_e所说,修改正确答案非常重要。 它应该是这样的:
@GET
@Produces({"application/javascript"})
public JSONWithPadding getOrdersJSonP(@QueryParam("callback") String callback) {
List<Order> orderList = OrderRepository.getOrders();
return new JSONWithPadding(new GenericEntity<List<Order>>(orderList){},
callback);
}