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


