【问题标题】:Returning JSONP from Jersey从泽西岛返回 JSONP
【发布时间】:2012-11-03 18:19:45
【问题描述】:

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

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

谢谢。
纳雷什

【问题讨论】:

    标签: jersey jsonp


    【解决方案1】:

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

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

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

    【讨论】:

    • 需要生成“application/javascript”并可能按照示例添加回调参数。
    【解决方案2】:

    正如@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);
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2011-08-02
      • 1970-01-01
      • 2015-04-16
      • 2017-05-13
      • 2013-12-21
      • 1970-01-01
      相关资源
      最近更新 更多