【Spring Boot】@PostMappingを複数定義する方法

同じフォーム内にPOSTリクエストを送信するボタンが複数あり
それぞれのボタンによって送信先のコントローラ内で別々の処理を行いたい場合、
リクエストによってハンドリングを分岐する方法をメモします。

(例)金額を投入するボタンと返金するボタン

フォーム

<form action="/money-control" method="post">
  <button type="submit" name="depositMoney">100円玉を投入する</button>
  <button type="submit" name="returnMoney">返却</button>
</form>

コントローラー

@Controller
@RequestMapping("/money-control")
public class MoneyController {
  
  @PostMapping(params="depositMoney")
  public String depositMoney(){
  //行いたい処理
    return "result";
  }

  @PostMapping(params="returnMoney")
  public String returnMoney(){
  //行いたい処理 
    return "result";
  }

}

@PostMappingアノテーションの後ろのカッコ内にparamsという属性を指定し、フォーム部品のname属性で指定した名前を対応させる。
(@PostMappingはPOSTリクエストを明示しない@RequestMappingでも可能)

POSTリクエストがどの部品から送られたものかを明示してやることで
ハンドリングするメソッドを切り替えることができます。

Follow me!