Thymeleafでプルダウンの処理を実装

Thymeleafでプルダウンの処理を実装

Thymeleafでプルダウンメニューを使用してフォームを作成する方法を示します。
以下に、サーバーサイドのクラス、Thymeleafテンプレート、およびフォームを送信するためのサンプルコードを示します。

サーバーサイドのクラス

まず、プルダウンメニューの選択肢を管理するためのクラスを作成します。

package com.example.demo.model;

import java.util.List;

public class DropdownForm {
  private String selectedOption;
  private List<String> options;

  public DropdownForm() {
    // コンストラクタ
  }

  public String getSelectedOption() {
    return selectedOption;
  }

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

  public List<String> getOptions() {
    return options;
  }

  public void setOptions(List<String> options) {
    this.options = options;
  }
}

コントローラー

次に、コントローラークラスを作成してフォームを処理します。

package com.example.demo.controller;

import com.example.demo.model.DropdownForm;
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;

import java.util.Arrays;
import java.util.List;

@Controller
public class DropdownController {
  @GetMapping("/dropdown")
  public String showForm(Model model) {
    DropdownForm form = new DropdownForm();
    List<String> options = Arrays.asList("Option 1", "Option 2", "Option 3");
    form.setOptions(options);
    model.addAttribute("dropdownForm", form);
    return "dropdown";
  }

  @PostMapping("/dropdown")
  public String submitForm(@ModelAttribute DropdownForm dropdownForm, Model model) {
    // フォームデータの処理
    model.addAttribute("selectedOption", dropdownForm.getSelectedOption());
    return "result";
  }
}

Thymeleafテンプレート(dropdown.html)

Thymeleafテンプレートでプルダウンメニューを作成します。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>プルダウンメニュー</title>
</head>
<body>
  <form th:action="@{/dropdown}" th:object="${dropdownForm}" method="post">
    <label for="option">選択肢:</label>
    <select id="option" th:field="*{selectedOption}">
      <option th:each="option : ${dropdownForm.options}" th:value="${option}" th:text="${option}"></option>
    </select>
    <button type="submit">送信</button>
  </form>
</body>
</html>

Thymeleafテンプレート(result.html)

選択したオプションを表示するためのテンプレートです。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>結果</title>
</head>
<body>
  <p>選択したオプション: <span th:text="${selectedOption}"></span></p>
  <a href="/dropdown">戻る</a>
</body>
</html>

このサンプルコードでは、DropdownFormクラスを使ってプルダウンメニューの選択肢を管理し、DropdownControllerでそのフォームを処理します。
dropdown.htmlテンプレートはプルダウンメニューを表示し、result.htmlテンプレートは選択したオプションを表示します。