未解决 Spring Boot 验证消息
我在解析验证消息时遇到问题。
我一直在搜索和阅读网络和SO几个小时了,我想将问题与自定义弹簧验证错误的标记答案联系起来。
我确实定义了一个bean,并且messions.properties可以正确读取,因为我也使用它来显示常规文本,这确实工作得很好。只是验证错误不会以应有的方式工作。我敢肯定这是一个愚蠢的错误,我只是忽略了...验证本身工作正常。MessageSource
th:text="#{some.prop.name}
约束:
@NotEmpty(message="{validation.mail.notEmpty}")
@Email()
private String mail;
messages.properties:
# Validation
validation.mail.notEmpty=The mail must not be empty!
模板部分:
<span th:if="${#fields.hasErrors('mail')}" th:errors="*{mail}"></span>
显示的文本:
{validation.mail.notEmpty}
我尝试了很多变化,都没有成功。
@NotEmpty(message="validation.mail.notEmpty")
@NotEmpty(message="#{validation.mail.notEmpty}")
将只显示消息字符串的确切值,不解析。
<span th:if="${#fields.hasErrors('mail')}" th:errors="${mail}"></span>
<span th:if="${#fields.hasErrors('mail')}" th:errors="#{mail}"></span>
<span th:if="${#fields.hasErrors('mail')}" th:errors="#{*{mail}}"></span>
<span th:if="${#fields.hasErrors('mail')}" th:errors="#{__*{mail}__}"></span>
将导致错误。
编辑:
调试后,我偶然发现了这一点:
类:org.springframework.context.support.MessageSourceSupport
方法:formatMessage(String msg, Object[] args, Locale locale)
将调用
formatMessage("{validation.mail.notEmpty}", null, locale /*German Locale*/)
它会遇到if (messageFormat == INVALID_MESSAGE_FORMAT) {
所以。。。我的消息格式不正确。这超出了我的范围/知识范围。有人知道这意味着什么吗?