Spring Boot校驗失敗信息無法顯示在頁面:模型屬性名大小寫不一致是原因嗎?

Spring Boot校驗失敗信息無法顯示在頁面:模型屬性名大小寫不一致是原因嗎?

spring Boot表單驗證錯誤信息前端顯示失敗排查

本文分析spring boot應用中,后端控制器成功捕獲驗證錯誤,但前端頁面無法顯示該問題的常見原因:模型屬性名大小寫不一致。

問題現象:

使用Spring Boot構建的注冊表單,利用@Valid注解和Errors對象進行驗證。控制器成功捕獲驗證錯誤,但thymeleaf模板使用th:errors屬性時,頁面未顯示任何錯誤提示。調試信息確認控制器已捕獲錯誤。

代碼示例分析:

假設TestUser.Java定義了用戶實體類,使用hibernate Validator注解(@NotBlank, @Email)進行驗證。TestUserController.java控制器使用@PostMapping方法接收@Valid TestUser testUser,并用Errors errors接收驗證結果。驗證失敗時,返回”user”視圖。關鍵在于@ModelAttribute(name = “testUser”)方法,它向模型添加名為testUser的屬性。

user.html Thymeleaf模板使用th:Object=”${testuser}”綁定數據。此處錯誤:控制器屬性名為testUser,模板使用testuser (大小寫不同)。

根本原因:

Thymeleaf模板的th:object=”${testuser}”與控制器模型屬性名testUser不匹配。Thymeleaf找不到testuser對象,導致無法渲染錯誤信息。th:errors依賴于th:object正確綁定模型對象。

解決方案:

將Thymeleaf模板中的th:object=”${testuser}”修改為th:object=”${testUser}”,使其與控制器模型屬性名一致。修改后,Thymeleaf可正確訪問testUser對象及其驗證錯誤信息,從而在頁面顯示錯誤提示。

? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享