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 に答える