2017-08-11 114 views
-1

Hy guys。發送Json對象到彈簧控制器

我有這樣的JS代碼,我在那裏創建一個對象通過Ajax功能發送給一個Spring控制器:

$('#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;但是,如果我通過My​​SQL客戶端查詢數據庫,我可以毫無問題地採取正確的結果。所以,有一行匹配我執行的查詢;這讓我覺得問題在於我如何創建Json對象和/或將其發送給Controller。

我的錯誤是什麼?

+1

當發送帶有'data',它在要求的身體,你不能用'@ RequestParam'檢索數據信息。您需要使用'@ RequestBody'並創建並用三個變量對象。例如:'... todayInfoAndIdRecover(@RequestBody TodayData todayData ...' – Thoomas

+0

您需要'POST'還是需要'GET'?您正在從'AJAX'發送請求,然後您正在使用'@ReqeustParam ''在服務器端,這是行不通的,如果你想使用'GET',那麼可以使用' –

+0

@Rossi Robinson我需要Post。 –

回答

1

當發送帶有數據的信息時,它在請求的正文中,您無法通過@RequestParam檢索您的數據。您需要使用@RequestBody並使用您的三個變量創建和對象。

例子:

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