9

我目前正在使用 Jersey 来返回 JSON。如何改为返回 JSONP?例如,我目前的 RESTful 方法是:

@GET
@Produces(MediaType.APPLICATION_JSON)
public List<Order> getOrders() {
    return OrderRepository.getOrders();
}

我想在 Tomcat 上部署(不想要求使用 GlassFish)。我对泽西岛的唯一依赖是:

    <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>

需要哪些额外的依赖?代码将如何变化?

谢谢。
纳雷什

4

2 回答 2

9

看看 Jersey 中的JSONP示例(尤其是ChangeList资源)(您可以在此处下载整个项目)。

你基本上需要做的是这样的:

@GET
@Produces(MediaType.APPLICATION_JSON)
public JSONWithPadding getOrders() {
    return new JSONWithPadding(new GenericEntity<List<Order>>(OrderRepository.getOrders()){});
}
于 2012-11-15T10:13:30.710 回答
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);
    }
于 2014-10-14T12:48:36.537 回答