JSR-303 从不显示默认消息

JSR-303 Default message is never displayed

我有 JSR-303 bean 验证工作,但我永远无法显示默认消息。

我创建了一个自定义验证器 DateRangeValidator,它检查两个日期以确保 from 日期在 to[=38= 之前] 日期。它工作正常。

我的注释如下所示:

@Target( ElementType.FIELD)
@Retention( RetentionPolicy.RUNTIME)
@Constraint(validatedBy = DateRangeValidator.class)
public @interface ValidDateRange {
    String message() default "{ValidDateRange.message}";
    Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};
}

messages.properties 我有以下内容:

ValidDateRange.message=From date must be before to date.

但是每当验证失败时,我在网页上看到的都是:

{ValidDateRange.message}

我在这里错过了什么?我的默认消息在哪里?

让消息显示的唯一方法是将以下内容添加到 messages.properties(不带大括号):

ValidDateRange.{myFormName}.{myRangeField}=blah blah blah

为什么从不显示默认消息?我不想为使用此验证的每个字段都指定一条消息。

The ValidationMessages resource bundle is typically a properties file, ValidationMessages.properties, in the default package of an application.