今回はSpring Bootを使ってチェックボックスの選択結果を受け取る方法について、シンプルに、そしてわかりやすく解説していきます!
「フォームで複数選択できるチェックボックス、どうやってJavaで受け取ればいいの?」と疑問に思ったことはありませんか?
実は、特別なクラスを作らなくても、@RequestParam
だけで受け取れる方法があるんです!
どんなときに使うの?
まずはこんな場面を想像してください。
例:車の価格帯を選ぶ画面
ユーザーが、検索条件として価格帯を複数選べるとします。
- 100万円未満
- 100〜300万円
- 300〜500万円
- 500万円以上
このとき、チェックボックスの値をサーバーに送る必要がありますよね。
HTMLフォームの書き方
<form action="/car/result" method="post">
<label><input type="checkbox" name="selectedPrices" value="under100" /> 100万円未満</label><br/>
<label><input type="checkbox" name="selectedPrices" value="100to300" /> 100〜300万円</label><br/>
<label><input type="checkbox" name="selectedPrices" value="300to500" /> 300〜500万円</label><br/>
<label><input type="checkbox" name="selectedPrices" value="over500" /> 500万円以上</label><br/>
<button type="submit">検索</button>
</form>
ポイントは、すべてのチェックボックスに同じname
属性(selectedPrices
)をつけることです。
これによって、複数の値がまとめてサーバーに送信されます。
サーバー側(コントローラー)の書き方
Spring Bootでは、@RequestParam
を使って簡単に値を受け取れます。
Listで受け取る場合
@PostMapping("/car/result")
public String handleForm(
@RequestParam(value = "selectedPrices", required = false) List<String> selectedPrices,
Model model) {
model.addAttribute("selectedPrices", selectedPrices);
return "car_result";
}
配列で受け取る場合
@RequestParam(value = "selectedPrices", required = false) String[] selectedPrices
解説
selectedPrices
という名前で複数の値が送られるので、それをListや配列として受け取るだけ!required = false
を指定しておくと、チェックされていなくてもエラーになりません。
結果表示のビュー(Thymeleaf)
<ul>
<li th:each="price : ${selectedPrices}" th:text="${price}"></li>
</ul>
選ばれた価格帯がリスト表示されます。
メリットとデメリット
項目 | 内容 |
---|---|
メリット | - コードが非常にシンプル- 特別なクラスを用意しなくて済む |
デメリット | - 入力チェックが難しい- 項目が増えると整理しづらい |
例えるなら…
この方法は「一夜漬けの勉強」にちょっと似ています。
短時間で済むけれど、応用は効きにくい。
だからこそ、「まず動かす」ためには最適な手法です!
どんなときにおすすめ?
シーン | おすすめ度 |
---|---|
チェックボックスで簡単なフィルターを作りたいとき | ★★★★★ |
入力項目が多く、バリデーションが必要なとき | ★☆☆☆☆ |
次に学ぶべきこと
この方法はシンプルな実装に向いていますが、今後アプリが複雑になるにつれて次の知識が必要になります。
- バリデーション(入力チェック)の方法
- 入力内容を構造化して扱うためのクラス設計
- セキュリティ面(CSRF対策など)
まずは、「どうやって値を受け取るのか」をしっかり理解しておきましょう!
最後に
今回のようなやり方を知っておくと、「とりあえず動くものを作ってみたい!」というときにとても便利です。
小さな成功体験を積み重ねて、少しずつレベルアップしていきましょう。
「まずはこのままやってみる。そして、次にどう改善できるか考えてみる」
この繰り返しが、成長への一番の近道です!