spring boot表单验证信息不能显示在页面上
使用Spring 当Boot进行表单验证时,我们经常使用@valid注释和Erors对象来捕获验证错误。然而,有时,即使错误信息的存在在在Controller层中得到确认,前端页面也无法正确显示。本文将分析此类问题的原因和解决方案。
问题描述:
Spring开发者使用Spring Boot 2.7.10和thymeleaf模板引擎建立了用户注册表。通过@notblank和@email注释验证testuser对象的字段。在controler中,errors对象成功捕获了验证错误,但这些错误信息无法显示在thymeleaf模板中。
代码分析:
TestUser.java定义用户实体,包括namee、email和password字段,并使用@notblank和@email注释进行验证,这些注释包含自定义的错误信息。
TestUserController.javaregister方法使用@valid注释,并在errors对象中验证错误。然而,关键问题是页面渲染没有正确地将错误信息传递给thymeleaf模板。@ModelAttribute("testUser该方法用于创建Testuser对象,并将其添加到模型中。
user.htmeleaf模板引擎用于渲染表单。它试图使用thymeleaf模板引擎:if="${#fields.hasErrors()"和th:errors="*{name}等表达式显示错误信息。
问题的原因及解决方法:
经过仔细调查,开发人员发现问题是模型中有两个Testuser对象。Thymeleaf模板中使用的ther:object="testuser而添加到模型中的对象名是testuser (大小写差异)。由于名称不一致,模板引擎无法正确获取验证错误的信息。
简单来说,根据thymeleaf模板引擎,Thymeleaf模板引擎:如果模型中的对象名称和th,object属性将在模型中找到对象:如果object指定的名称不一致(大小写敏感),则无法正确绑定对象并获取错误信息。 修改user.html中的th:object="testUser" (注意大小写)可以解决这个问题。 将模型中的对象名称与模板中的th正确匹配:保持object属性一致是关键。
以上是Spring 页面上不能显示Boot表单验证信息?如何查看Thymeleaf模板引擎的错误?详情请关注图灵教育其他相关文章!
