Thymeleafでラジオボタン(radio)の処理を実装

Thymeleafでラジオボタン(radio)の処理を実装

ラジオボタンを使ったフォームの実装例を以下に示します。
ThymeleafとSpringBootを用いて、フォームを作成し、ラジオボタンの選択をサーバーに送信するまでの一連の処理を含んでいます。

1. フォームクラス (Form Class)

package com.example.demo;

public class Form {
  private String selectedOption;

  public String getSelectedOption() {
    return selectedOption;
  }

  public void setSelectedOption(String selectedOption) {
    this.selectedOption = selectedOption;
  }
}

2. コントローラ (Controller)

package com.example.demo;

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.ModelAttribute;

@Controller
public class FormController {

  @GetMapping("/form")
  public String showForm(Model model) {
    model.addAttribute("form", new Form());
    return "form";
  }

  @PostMapping("/submit")
  public String submitForm(@ModelAttribute Form form, Model model) {
    model.addAttribute("selectedOption", form.getSelectedOption());
    return "result";
  }
}

3. フォームのHTML (form.html)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>ラジオボタンフォーム</title>
</head>
<body>
  <form th:action="@{/submit}" th:object="${form}" method="post">
    <p>オプションを選択してください:</p>
    <label>
      <input type="radio" th:field="*{selectedOption}" value="option1"/> オプション 1
    </label><br/>
    <label>
      <input type="radio" th:field="*{selectedOption}" value="option2"/> オプション 2
    </label><br/>
    <label>
      <input type="radio" th:field="*{selectedOption}" value="option3"/> オプション 3
    </label><br/>
    <button type="submit">送信</button>
  </form>
</body>
</html>

4. 結果のHTML (result.html)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>結果</title>
</head>
<body>
  <h1>選択されたオプション:</h1>
  <p th:text="${selectedOption}">ここに選択されたオプションが表示されます</p>
  <a href="/form">戻る</a>
</body>
</html>

この例では、Formクラスがラジオボタンの選択値を保持し、FormControllerがフォームを表示および送信されたデータを処理します。
form.htmlにはラジオボタンの選択肢があり、result.htmlでは選択されたオプションが表示されます。