2016-09-01 10 views
0

SpringコントローラからAJAXリクエストへオブジェクトのリストを返したいとします。SpringコントローラからAJAXリクエストへオブジェクトリストを返す

AJAX要求:

function doAjaxPost(date) { 
    $.ajax({ 
     type : "POST", 
     contentType : "application/json", 
     url : "<%="/water-consumer" + homepageURL + "/hourConsumption"%>", 
     data : date, 
     dataType : 'json', 
     success : function(response) { 
      if(response != null) 
       showHourConsumption(response); 
     } 
    }); 
} 

春コントローラ:

@RequestMapping(value = "/{username}/hourConsumption", method=RequestMethod.POST, produces="application/json") 
public @ResponseBody List<HourConsumption> getHoursConsumptions(@RequestBody String day, HttpSession session, Model model) { 
    // do something .... 
    Household household = (Household)session.getAttribute("household"); 
    List<HourConsumption> consumptions = this.mrs.getHoursConsumption(household.getSmart_meter().getOid(), day); 
    // do something 

    if(consumptions == null) //check if what get back from something is not null 
     return null; 
    else 
     return consumptions; 
} 

今は、AJAX要求は、右行くので、私は、コントローラからの要求を受信し、それが正しいを生成し、消費(List)しかし、リストを返すと、ブラウザは私に次のものを返します。エラーは:

は、リソースの読み込みに失敗しました:サーバーは

は、誰かが、私はこれの事か行うための正しい方法を行うことができますどのように私に言うことができる406 (許容できない)の状態で応答しそう? ありがとうございます!

答えて

0

いくつかのポインタ:

  1. HTTPメソッドはGETイソPOSTすることができます。
  2. セッションパラメータとモデルパラメータを削除します。セッションが必要な場合は、Autowired HttpServletRequestから入手できます。
  3. あなたが依存
0

としてジャクソンは、以下の2 jarファイルのクラスパスに存在していることを確認してください持っていることを確認してください。

いずれかまたは両方が不足している場合、このエラーが発生します。

ジャクソンコアとジャクソン・マッパー

+0

Mavenの構成では、これらの2つのJARを持っているために、pom.xmlファイルに追加するための正しい何ですか? –

+0

<! - https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl - > org.codehaus.jackson ジャクソンマッパー-ASL 1.9 。13 ranjeet8082

+0

<! - https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core - > com.fasterxml.jackson.core ジャクソンコア 2.8.0 ranjeet8082

0

問題は、あなたがよくJSONを形成していないブラウザに、戻ってきているデータです。その後、コントローラから属性 "produce"を削除して、Spring Jacksonトランスフォーマーからjsonエンティティを作成します。

これにあなたのコードを変更

@RequestMapping(value = "/{username}/hourConsumption", method=RequestMethod.POST) 
public @ResponseBody List<HourConsumption> getHoursConsumptions(@RequestBody String day, HttpSession session, Model model) { 
    // do something .... 
    Household household = (Household)session.getAttribute("household"); 
    List<HourConsumption> consumptions = this.mrs.getHoursConsumption(household.getSmart_meter().getOid(), day); 
    // do something 

    if(consumptions == null) //check if what get back from something is not null 
     return null; 
    else 
     return consumptions; 
} 
0

は、ページにJSON形式の文字列を送信するために、Googleのgson(https://mvnrepository.com/artifact/com.google.code.gson/gson)を使用してみてください。

春コントローラ

@RequestMapping(value = "/{username}/hourConsumption", method=RequestMethod.POST) 
public @ResponseBody String getHoursConsumptions(@RequestBody String day, HttpSession session, Model model) { 
    String jsonFormatData = ""; 
    // do something .... 
    Household household = (Household)session.getAttribute("household"); 
    List<HourConsumption> consumptions = this.mrs.getHoursConsumption(household.getSmart_meter().getOid(), day); 
    // do something 


    // **Using Gson** 
    // You can include this in your bean definition and autowire it 
    // and use the singleton created by Spring. 
    // For this example I am instantiating Gson myself 
    Gson gson = new Gson(); 

    jsonFormatData = gson.toJson(consumptions); 

    return jsonFormatData; 
} 
関連する問題