2017-09-22 9 views
0

私のアプリでは、エンティティを作成して更新することができます。問題は、1つのcreateOrUpdateメソッドでこの2つのメソッドをPOSTマッピングでマージできず、オブジェクトが新しいかどうかをチェックすることができないことです(IDは自動生成されず、ユーザによって提供されるためです)。 メソッドの作成(POSTマッピング)と更新(PUTマッピング)のいずれかを行うことになりました。しかし、しばらくして、私はSpringでメソッドがPUTであればパラメータを要求できないことを知っていました。 私はそれに2つのPOSTメソッドを使うべきだと思いますが、私のアプリケーションは正しく動作しないので、同じURLパターンを持っています。Spring MVCで同じURLの2つのPOSTメソッドを区別することはできますか?

このようなことは可能ですか?事前

+0

1 /なぜ2つの異なるURLを使わないのでしょうか? 2 /私はあなたが@pathvariableを使うことができると信じています 3 /同じフォームを送信するので、なぜ2つの方法がありますか? –

+0

あなたはそれをそれのようにデザインする必要がありますか? –

+0

:D さて、別のURLを持つことは唯一の解決策であると思われます。 –

答えて

1

@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"); 
     } 
    }); 
} 

おかげであなたは@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へとご協力いただきありがとうございます。いくつかの説明を追加することで、あなたの答えをより良くしたいかもしれません。 –

関連する問題