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

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

spring Boot表單驗(yàn)證錯(cuò)誤信息前端顯示失敗排查

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

問題現(xiàn)象:

使用Spring Boot構(gòu)建的注冊(cè)表單,利用@Valid注解和Errors對(duì)象進(jìn)行驗(yàn)證。控制器成功捕獲驗(yàn)證錯(cuò)誤,但thymeleaf模板使用th:errors屬性時(shí),頁面未顯示任何錯(cuò)誤提示。調(diào)試信息確認(rèn)控制器已捕獲錯(cuò)誤。

代碼示例分析:

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

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

根本原因:

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

解決方案:

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

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊11 分享