我将 Spring MVC 与 Thymeleaf 一起使用。我对 Thymeleaf 有一个问题,fields.hasErrors
如下所示:
当引发Bean Validation 约束错误(例如 @NotNull 约束)时,以下用法fields.hasErrors
完美地工作:
<span class="help-inline" th:if="${#fields.hasErrors('member.email')}" th:text="#{message_form.validation.email}"></span>
电子邮件字段旁边会显示一条错误消息 OK。
但是,当我的代码引发“特定于应用程序”的错误(与Bean Validation constraint error相对)时(请参阅下面的控制器代码),
// FROM SPRING MVC CONTROLLER
if (!registrationService.isEmailAvailable(registrationInfo.getMember().getEmail())) {
bindingResult.addError(new ObjectError("member.email", "email already used")); // TODO i18n
}
th:if="${#fields.hasErrors('member.email')}"
不评估为真,并且不显示错误消息....
我发现显示这些“特定于应用程序”错误的唯一方法是在表单下方包含以下内容:
<div id="errors" class="alert alert-error">
<ul th:if="${#fields.hasErrors('*')}">
<li th:each="err : ${#fields.errors('*')}" th:text="${err}"></li>
</ul>
</div>
然后,它将显示“已使用的电子邮件”作为列表项。
谁能澄清一下的行为,th:if="${#fields.hasErrors('member.email')}"
尤其是告诉我为什么在“应用程序特定”错误的情况下它会评估为假?