今回は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対策など)

まずは、「どうやって値を受け取るのか」をしっかり理解しておきましょう!


最後に

今回のようなやり方を知っておくと、「とりあえず動くものを作ってみたい!」というときにとても便利です。
小さな成功体験を積み重ねて、少しずつレベルアップしていきましょう。

「まずはこのままやってみる。そして、次にどう改善できるか考えてみる」
この繰り返しが、成長への一番の近道です!

最後までお読みいただきありがとうございます。