2017-09-22 70 views
0

在我的應用程序中,我可以創建和更新實體。問題是我不能將一個createOrUpdate方法中的這兩個方法與POST映射合併,並檢查對象是否是新的(這是因爲ID不是自動生成的,由用戶提供)。 我最終創建了一個方法創建(POST映射)和更新(PUT映射)。但過了一段時間,我知道在Spring中,如果方法是PUT,那麼它不能請求參數。 所以,我想我應該使用2個POST方法,但它們具有相同的URL模式,因爲我的應用程序無法正常工作。是否可以在Spring MVC中區分2個POST方法和相同的URL?

是否有可能做出類似的東西?

@RequestMapping(value = "/ajax/users") 
/.../ 
@PostMapping (//specific param here to distinguish???) 
public void create(User user) 
{ 
service.save(user); 
} 

@PostMapping(//specific param here to distinguish???) 
public void update(User user) 
{ 
service.update(user); 
} 

function save() { 
    $.ajax({ 
     type: "POST", //specific param here to distinguish? 
     url: ajaxUrl, 
     data: form.serialize(), 
     success: function() { 
      $("#editRow").modal("hide"); 
      updateTable(); 
      successNoty("Saved"); 
     } 
    }); 
} 

function update() { 
    $.ajax({ 
     type: "POST",//specific param here to distinguish? 
     url: ajaxUrl, 
     data: form.serialize(), 
     success: function() { 
      $("#editRow").modal("hide"); 
      updateTable(); 
      successNoty("Updated"); 
     } 
    }); 
} 

在此先感謝

+0

1 /爲什麼不使用2個不同的網址? 2 /我相信你可以使用@pathvariable 3 /你發送相同的表格,那麼爲什麼還有兩種方法呢? –

+0

是什麼強迫你設計它呢? –

+0

:D 好的,有不同的URL似乎是唯一的解決方案,thx –

回答

1

您可以使用@RequestBody註釋:

@PutMapping("https://stackoverflow.com/users/{id}") 
public void update(@PathVariable Long id, @RequestBody User user) 
{ 
    service.update(user); 
} 
+0

但這裏的關鍵是你不能請求PUT方法 –

0

這可能會幫助您:

@RequestMapping(value="https://stackoverflow.com/users/{id}", method=RequestMethod.POST) 
+0

歡迎來到StackOverflow並感謝您的幫助。你可能想通過添加一些解釋來讓你的答案更好。 –

相關問題