从泽西岛返回JSONP

时间:2012-11-15 06:38:49

标签: jersey jsonp

我目前正在使用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>

还需要哪些其他依赖项?代码将如何变化?

感谢。
纳雷什

2 个答案:

答案 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);
    }