Thymeleafでチェックボックス(checkbox)の初期値を設定

Thymeleafでチェックボックス(checkbox)の初期値を設定

Thymeleafでチェックボックスの初期値を設定する方法について、以下のように実装できます。

コントローラのコード (Java)

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class CheckboxController {

  @GetMapping("/form")
  public String showForm(Model model) {
    // チェックボックスの初期値を設定
    boolean isChecked = true; // 初期値を設定

    model.addAttribute("isChecked", isChecked);
    return "form";
  }
}

Thymeleafのテンプレート (form.html)

<!DOCTYPE html>
<html>
<head>
  <title>チェックボックスフォーム</title>
</head>
<body>
  <form action="/submit" method="post">
    <label>
      <input type="checkbox" name="checkbox" th:checked="${isChecked}" />
      チェックボックス
    </label>
    <button type="submit">送信</button>
  </form>
</body>
</html>

このコードでは、showForm メソッドでチェックボックスの初期値を設定し、form.html テンプレートでその値を表示しています。

チェックボックスが複数ある場合

チェックボックスが複数ある場合の実装例を示します。
以下の例では、複数のチェックボックスをフォームに含め、それぞれの初期値を設定し、選択された値を受け取る方法を説明します。

コントローラのコード (Java)

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.Map;
import java.util.HashMap;

@Controller
public class CheckboxController {

  @GetMapping("/form")
  public String showForm(Model model) {
    // チェックボックスの初期値を設定
    Map<String, Boolean> checkboxValues = new HashMap<>();
    checkboxValues.put("option1", true);  // 初期値を設定
    checkboxValues.put("option2", false); // 初期値を設定
    checkboxValues.put("option3", true);  // 初期値を設定

    model.addAttribute("checkboxValues", checkboxValues);
    return "form";
  }
}

Thymeleafのテンプレート (form.html)

<!DOCTYPE html>
<html>
<head>
  <title>チェックボックスフォーム</title>
</head>
<body>
  <form action="/submit" method="post">
    <label>
      <input type="checkbox" name="option1" th:checked="${checkboxValues['option1']}" />
      オプション 1
    </label>
    <br />
    <label>
      <input type="checkbox" name="option2" th:checked="${checkboxValues['option2']}" />
      オプション 2
    </label>
    <br />
    <label>
      <input type="checkbox" name="option3" th:checked="${checkboxValues['option3']}" />
      オプション 3
    </label>
    <br />
    <button type="submit">送信</button>
  </form>
</body>
</html>

この例では、複数のチェックボックスをフォームに含め、それぞれの初期値を設定しています。