字段对象是来自 thymeleaf 还是 spring

Is fields object from thymeleaf or spring

我看到了如下使用 Thymeleaf 和 Spring boot 进行表单验证的内容。

<p th:if="${#fields.hasErrors('datePlanted')}" th:errors="*{datePlanted}">Incorrect date</p>

现在我不明白了:这个字段对象是从哪里来的?这是Spring准备的东西吗?我在这里迷路了。

你可以看看 thymeleaf 文档 https://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#field-errors

<p th:if="${#fields.hasErrors('datePlanted')}" th:errors="*{datePlanted}">Incorrect date</p>

这里的所有标签,例如 th:if,th: 错误来自 thymeleaf 模板。 这里没有任何内容来自 Spring Boot。因为这是您的应用程序的前端。

让我们输入字段,例如使用 Thymeleaf,您提交的是这个字段,然后当您调用 fields.hasErrors 时,它会查看此字段的任何错误。

<input type="hidden" class="form-control" placeholder="Name"
                    th:field="*{id}" th:value="*{id}" />

Fields.java 是包 org.thymeleaf.spring4.expression.Fields

中的 class

thymeleaf-spring4-xxx.jar

拉进来了

#fields.hasErrors 是调用 Fields class.

方法 hasErrors() 的语法
public boolean hasErrors(final String field) {
    return FieldUtils.hasErrors(this.configuration, this.processingContext, field);
}