Spring boot表单验证错误信息前端显示失败
本文分析Spring 在Boot应用程序中,后端控制器成功地捕获了验证错误,但前端页面无法显示问题的常见原因:模型属性名称大小写不一致。
问题现象:
使用Spring Boot构建的注册表使用@Valid注释和Erors对象进行验证。控制器成功捕获验证错误,但Thymeleaf模板使用Thymeleaf模板:当errors属性时,页面没有显示任何错误提示。调试信息确认控制器已捕获错误。
代码示例分析:
假设Testuser.java定义用户实体类,使用Hibernatete Validator注释(@NotBlank, @Email)进行验证。TestUserController.java控制器采用@PostMaping方法接收@Valid TestUser testUser,并使用Errors errors接收验证结果。验证失败时,返回“user视图。关键在于@ModelAttribute(name = "testUser“)方法,它将名为testuser的属性添加到模型中。
user.html Thymeleaf模板使用thymeleaf模板:object="${testuser}“绑定数据。此处错误:控制器属性称为testuser,模板使用testuser (不同的大小写)。
根本原因:
thymeleaf模板thymeleaf:object="${testuser}“与控制器模型属性名testuser不匹配。thymeleaf找不到testuser对象,导致无法渲染错误信息。th:依赖therrors:正确绑定模型对象的object。
解决方案:
thymeleaf模板中的thymeleaf:object="${testuser}修改为th:object="${testUser}“,使其与控制器模型属性名一致。修改后,thymeleaf可以正确访问testuser对象及其验证错误信息,从而在页面上显示错误提示。
以上是Spring Boot验证失败信息无法显示在页面上:模型属性名大小写不一致是原因吗?详情请关注图灵教育的其他相关文章!
