You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot+Thymeleaf表单校验th:each遍历errors报错求助

问题根因

该报错是Thymeleaf模板的th:each迭代语法使用错误导致的,你错误将整个迭代逻辑包裹在了${}表达式内部,导致模板引擎无法识别迭代规则。

修复方案

1. 修正模板中错误的th:each写法

Thymeleaf的th:each正确语法格式为:th:each="迭代变量 : ${可迭代对象}",不需要把迭代变量和冒号也放在${}内部。
你需要修改home.html中两处错误的错误提示行:

  • 用户名错误提示行,将原代码:
<div th:each="${e : #fields.errors('userName')}" th:text="${e}" class="invalid-feedback"></div>

修改为:

<div th:each="e : ${#fields.errors('userName')}" th:text="${e}" class="invalid-feedback"></div>
  • 邮箱错误提示行,将原代码:
<div th:each="${e:#fields.errors('email')}" th:text="${e}" class="invalid-feedback"></div>

修改为:

<div th:each="e : ${#fields.errors('email')}" th:text="${e}" class="invalid-feedback"></div>

2. 可选优化(非必须)

由于你已经在form标签上通过th:object="${loginData}"绑定了表单对象,字段校验可以用更简洁的*{属性名}写法,示例如下:

th:classappend="${#fields.hasErrors('*{userName}')?'is-invalid':''}"

修改完成后重启项目即可正常展示表单校验的错误提示,你现有控制器、实体类的校验逻辑都没有问题,不需要额外调整。

内容的提问来源于stack exchange,提问作者Sharman Jeurkar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 23:18:04