見出し画像

Spring bootにてバリデーション結果が画面に表示されない。Formのクラス名とthymeleaf側のth:objectを一致させなければならない

現象

Spring bootにてバリデーション(例:@Sizeアノテーション等での桁数チェック)を設定しているにも関わらず、画面(thymeleaf)にそのエラー結果が表示されない。

解決

html(thymeleaf)にて、Formインスタンスを設定しているth:objectをFormクラス名と一致させなければならない。

例:Formクラス名=AdminRequestForm

Controller.java

@PostMapping("/approvalRequest")
public String approvalRequest(Model model,
                              @Validated @ModelAttribute AdminRequestForm requestForm,
                              BindingResult result,
                              RedirectAttributes redirectAttributes) {
                                            
template.html

悪例
<form id="form" method="POST" th:object="${requestForm}" th:action="@{/approvalRequest}">

改善
<form id="form" method="POST" th:object="${adminRequestForm}" th:action="@{/approvalRequest}">

この記事が気に入ったらサポートをしてみませんか?