2017-08-11 12 views
-1

Hy男。JsonオブジェクトをSpringコントローラに送信

私は、これは私はAjaxの機能を経由して春のコントローラに送信するためのオブジェクトを作成するコードを、JSあります

$('#eventsdatageneral').on('click', '.btn.btn-info', function(event) 
      { 
       var today_date = new Date().getTime(); 
       var dataToSend = new Object(); 
       dataToSend.dateToSend = today_date; 
       dataToSend.nameToSend = host_name; 
       dataToSend.typeToSend = type_name; 
       console.log(dataToSend); 
       event.preventDefault(); 

       //here starts the code to sending data to Spring controller 
       $.ajax({ 
         url: "../todaydatarecover.json", 
         type: "post", 
         data: dataToSend, 
         success : function() { 

          console.log("Invio riuscito."); 
          //console.log(moment(today_date).format('DD/MM/YYYY')); 
         } 

        }); 
      }); 

これはコントローラです:

@PostMapping(value="/todaydatarecover.json") 
    @ResponseBody 
    public ModelAndView todayInfoAndIdRecover(ModelAndView model, HttpServletRequest request, 
      @RequestParam(name="dateToSend", required=false) long dateInBox, 
      @RequestParam(name="nameToSend", required=false) String nameInBox, 
      @RequestParam(name="typeToSend", required=false) String typeInBox) throws IOException 
    { 
     //First of all, we invoke getinfo methods to take info and id 
     Timestamp date = new Timestamp(dateInBox); 
     Events event = networks.getInfoandId(nameInBox, typeInBox, date); 

     //Second, we put this list in the model and set properties for jquery datatables 
     model.addObject("data", event); 

     //Verify id and info 
     System.out.println("The info is: " + event.getInfo()); 
     System.out.println("The id is: " + event.getId()); 

     //Finally, we return the model 
     return model; 
    } 

私が実行しようとすると、私はorg.springframework.dao.EmptyResultDataAccessExceptionIncorrect result size: expected 1, actual 0を手に入れました。しかし、私はMySQLクライアントを介してDBを照会する場合、私は問題なく正しい結果を得ることができます。したがって、実行するクエリに一致する行があります。この問題は、Jsonオブジェクトをどのように作成するのか、それともコントローラに送信するのかという問題になると私は考えています。

私のエラーは何ですか?

+1

、それはリクエストのボディにあります、あなたは' @のRequestParam'を使用してデータを取得することはできません。 '@ RequestBody'を使用し、3つの変数を使ってオブジェクトを作成してオブジェクト化する必要があります。例: '... todayInfoAndIdRecover(@RequestBody TodayData todayData ...'。 – Thoomas

+0

'POST'が必要なのか' GET'が必要ですか?あなたは 'AJAX'から本文にリクエストを送り、' @ReqeustParam 'サーバー側では動作しませんが、これはうまくいきません.GETを使用したい場合は可能です。 –

+0

@Rossi Robinson投稿が必要です –

答えて

1

データを含む情報を送信する場合、その情報は要求の本文にあり、@RequestParamでデータを取得することはできません。 @RequestBodyを使用して、3つの変数を作成してオブジェクト化する必要があります。

例:data` `との情報を送信する際

@PostMapping(value="/todaydatarecover.json") 
@ResponseBody 
public ModelAndView todayInfoAndIdRecover(@RequestBody TodayData todayData, ModelAndView model, HttpServletRequest request) throws IOException 
{ 
関連する問題