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