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クラスでバリデーションを行い、コントローラでその結果に応じた処理を行います。
バリデーションエラーがある場合、ユーザーにエラーメッセージが表示され、エラーがない場合は成功メッセージが表示されます。