ThymeleafでフォームのPOST処理を実装

ThymeleafでフォームのPOST処理を実装

ThymeleafでフォームのPOST処理を実装するためのサンプルコードを以下に示します。
このコードには、フォームのクラス、Thymeleafのテンプレート、コントローラの処理、およびバリデーション処理が含まれています。

1. フォームのクラス (UserForm.java)

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;

public class UserForm {
  @NotBlank(message = "名前は必須です。")
  @Size(min = 2, max = 50, message = "名前は2文字以上50文字以下で入力してください。")
  private String name;

  @NotBlank(message = "メールアドレスは必須です。")
  private String email;

  // ゲッターとセッター
  public String getName() {
    return name;
  }

  public void setName(String name) {
    this.name = name;
  }

  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }
}

2. Thymeleafテンプレート (userForm.html)

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
  <title>ユーザーフォーム</title>
</head>
<body>
  <h1>ユーザー情報を入力してください</h1>
  <form th:action="@{/submitForm}" th:object="${userForm}" method="post">
    <label for="name">名前:</label>
    <input type="text" id="name" th:field="*{name}" />
    <span th:if="${#fields.hasErrors('name')}" th:errors="*{name}">名前エラー</span>
    <br />
    <label for="email">メールアドレス:</label>
    <input type="text" id="email" th:field="*{email}" />
    <span th:if="${#fields.hasErrors('email')}" th:errors="*{email}">メールアドレスエラー</span>
    <br />
    <button type="submit">送信</button>
  </form>
</body>
</html>

3. コントローラ (UserController.java)

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;

import javax.validation.Valid;

@Controller
public class UserController {
  @GetMapping("/userForm")
  public String showForm(Model model) {
    model.addAttribute("userForm", new UserForm());
    return "userForm";
  }

  @PostMapping("/submitForm")
  public String submitForm(@Valid @ModelAttribute("userForm") UserForm userForm, 
                           BindingResult bindingResult, 
                           RedirectAttributes redirectAttributes) {
    if (bindingResult.hasErrors()) {
      return "userForm";
    }

    // フォームのデータを処理するコード
    redirectAttributes.addFlashAttribute("message", "フォームが正常に送信されました!");
    return "redirect:/userForm";
  }
}

このコードは、Thymeleafを使用してフォームを作成し、SpringBootでPOSTリクエストを処理する方法を示しています。
UserFormクラスでバリデーションを行い、コントローラでその結果に応じた処理を行います。
バリデーションエラーがある場合、ユーザーにエラーメッセージが表示され、エラーがない場合は成功メッセージが表示されます。