2017-04-02 35 views
2

我想調用一個控制器方法,將保存我的對象,但是當我嘗試對它的URL它會返回http錯誤。我瀏覽過一些類似的問題,但沒有運氣。所以我想在問自己......無法加載資源:服務器響應狀態爲400(錯誤請求)Spring JS調用控制器不工作

這裏是我的Ajax(爲簡單起見我改名的變量):

function addDob() { 
 
     var var1 = $("#var1").val(); 
 
     var var2 = $("#var1").val(); 
 
     var var3 = {}; 
 
     
 
      
 
     var3["var3"] = $("#var3").val(); 
 
     var json = JSON.stringify({ 
 
     
 
      var1 : var1, 
 
      var2 : var2, 
 
      var3 : var3 
 
     }); 
 
      console.log(json); 
 
     alert(json); 
 
     $.ajax({ 
 
      url: 'add_dob', 
 
      type: 'POST', 
 
      contentType: 'application/json; charset=utf-8', 
 
      dataType: json, 
 
      success: function (data) { 
 
       console.log(json); 
 
       alert(data.message); 
 
       resetForm(); 
 
      }, 
 
      error: function() { 
 
       
 
       alert("Error!"); 
 
      } 
 
     }); 
 
    }

這裏是我的控制器:

@RequestMapping(value = "/add_dob", method = RequestMethod.POST, produces = "application/json") 
@ResponseBody 
public Map<String, Object> saveDob(@RequestBody DobavljacWrapper wrapper) { 
    Map<String, Object> data = new HashMap<>(); 
    Dob d = new Dob(); 
    d.setCountryID(wrapper.getCountryID()); 
    d.setDobName(wrapper.getDobName()); 
    d.setYear(wrapper.getYear()); 

    dobService.save(d); 
    data.put("message", "Dob was successfully saved!"); 
    return data; 
} 

歡迎任何建議。如果我需要插入更多信息,請告訴我。乾杯!附:我有一個類似的項目這樣的作品,但我的模型類是不同的,所以我懷疑有什麼要說的呢..

更新1.0:

我想通了,它有很多做的@RequestBody參數。

該參數與您通過Ajax推送的參數相匹配。現在,我需要該參數來匹配具有我通過Ajax傳遞的確切屬性的對象。在我的某個地方我犯了一個錯誤,我不知道什麼是正確的方式在這裏...

如果我設置「@RequestBody字符串someString」它將返回參數我推ajax,但我將無法訪問與getters的信息,因爲它是一個字符串。所以我需要一個對象來收集這些值!

+0

人人都恨。不要這樣做。 – Kunok

+0

我很欣賞這個評論,儘管我對此無能爲力,爲了理解的目的,我用我的語言命名了這些方法和變量,這是常識。 我知道在這裏處理可能會令人困惑,所以我可能會重新輸入問題。 – JovanGacic

回答

1

答案是Wrapper類。 它無法爲其分配值並拋出錯誤,因爲我將屬性設置爲「私有」。 設置他們「公開」爲我解決了它。

不能相信這是錯誤...當你的名字在任何其他語言非英語變量

相關問題