2016-04-15 27 views
1

ブラウザでJSONを表示しようとしていますが、JSONでデータを取得していますが、テーブルの最後のレコードのみを取得しています。次のJARは、私のビルド・パスに存在しているFasterxml Jacksonマッピング - データが正しくバインドされていません

  • ジャクソン、データバインド
  • ジャクソンコア
  • ジャクソンの注釈ここ

は私のコントローラメソッド実は

@RequestMapping("/viewDashboard") 
    @ResponseBody 
    public ModelMap test(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, @RequestParam String name) { 

     ModelMap modelMap = new ModelMap(); 
     List<Instances> instances = viewDashboardServiceImpl.viewDashboard(); 
     log.info(instances.size()); 
     return modelMap.addAllAttributes(instances); 

    } 
} 

でありますデータベーステーブル私は5つのレコードですが、jsonではレコードデータは1つだけです。

上記のメソッドをmodelMapオブジェクトに追加する前に、リストのサイズをチェックしていますが、JSONでは5つのレコードのデータしか表示されません。ここで

は私のコンソール出力である

17:08:08638 INFO [com.mac.controller.DashboardController](HTTP - 127.0.0.1-808 0-1)インスタンスリストのサイズ:5

は、ここに私のJSON事前に

{"instances":{"id":5,"instanceName":".net","applications":{"id":3,"name":">net","ownerName":"Mou","version":"3kmnc"},"environments":{"id":2,"name":"IST","ownerName":"Mou","version":"1.23.asd"},"version":"2.3as"}} 

おかげです。

答えて

1

modelMap.addAllAttributes(instances)が実際の問題のようです。 スプリングは、各要素のクラス名に基づいてリスト要素のキーを生成します。例えば

:ここ

List<String> list = Arrays.asList("x", "y", "z"); 

ModelMap m = new ModelMap(); 
m.addAllAttributes(list); 

ModelMap属性名"string"と値"z"を持つ一つのエントリが含まれます。 "x""y"は、生成されたすべての属性名が"string"になり、最後のものが勝つため、マップには含まれません。 modelMapにそれらを追加するとき

これを修正するには、単にあなたのinstancesコレクションに属性名を割り当てる:

modelMap.addAttribute("myInstances", instances); 
関連する問題