2017-09-16 4 views
1

私はJSONとしてページ名を持つビューに私をリダイレクトしようとしているSpring MVCのJSONを準備するが、ページをロードする代わりに

@RequestMapping(value = "/MerchantMonitoringAPI", method = RequestMethod.GET,produces = "application/json") 
public String MerchantMonitoring() { 

    ApplicationContext context = 
      new ClassPathXmlApplicationContext("Spring-Module.xml"); 

     TopMerchantsDAO topMerchantsDAO = (TopMerchantsDAO) context.getBean("topMerchantsDAO"); 
     TopMerchants topMerchants = topMerchantsDAO.retrieveMerchantList(); 

     for(String temp:topMerchants.getMerchantList()) 
     { 
      System.out.println(temp); 
     } 

     Gson gson = new Gson(); 
     Type type = new TypeToken<TopMerchants>() {}.getType(); 

     String jsonPayload = gson.toJson(topMerchants, type); 
     System.out.println(jsonPayload); 

     return jsonPayload; 
} 

JSONペイロードを返送するためのコントローラを持っている(localhostを:8080/{"merchantList":["Apple"、 "Google"}} jsp)

これをやめてJSONペイロードを返す方法はありますか?

+0

この@RestControllerをRequestMappingの上に追加できますか? –

+0

@georgesvan that worked! –

+0

ニース。下の自分の答えを自由に確認してください –

答えて

2

方法が今@RestControllerで注釈されているので、オブジェクトは、このメソッドから返さ@RequestMapping

@RestController 
    @RequestMapping(value = "/MerchantMonitoringAPI", method = 
    RequestMethod.GET,produces = "application/json") 
    public String MerchantMonitoring() {...} 

の上に@RestController追加は、クライアントのためのJSONリソース表現を生成するためにメッセージ変換を通過します。

0

あなたが同じクラスにJSONページを返すためのいくつかの方法を持っているしたい場合、あなたはまだ@Controllerであなたのクラスに注釈を付けることができ、あなたは注釈を付けます場合@ResponseBody

で注釈を付けJSONのための方法@RestControllerのクラス - クラス内のすべてのメソッドは@ResponseBodyのように動作し、クラスは@Controllerアノテーションのようになります。もちろん、これはより良いアプローチです(ページとJSONを1つのコントローラに返すメソッドは含まない)。

注意!@RestControllerは、(@Controllerではなく)クラスに対してのみ使用でき、メソッドには使用できません。あなたはこの注釈のソースを開きます 場合は、他のものの間で表示されます次:

クラス、インタフェース(注釈型を含む)、または列挙型の宣言

@Target({ElementType.TYPE}) 
@Retention(RetentionPolicy.RUNTIME) 
@Documented 
@Controller 
@ResponseBody 
public @interface RestController { 
    String value() default ""; 
} 

ElementType.TYPEはコメントを持っています

関連する問題