2012-11-15 11 views
9

現在、Jerseyを使用してJSONを返しています。代わりにJSONPを返すにはどうしたらいいですか?例えば、私の現在のRESTfulな方法は次のとおりです。JerseyからJSONPを返す

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

追加の依存関係は必要ですか?コードはどのように変更されますか?

ありがとうございました。
ネアシュは

答えて

9

はジャージーJSONP例(特にChangeListリソース)(あなたがプロジェクト全体hereをダウンロードすることができます)を見てみましょう。

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

それは魅力的でした!ありがとうございました! – Naresh

+4

"application/javascript"を生成し、この例のようにコールバックパラメータを追加する必要があります。 –

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); 
    } 
関連する問題