Как ввести значения из другого файла свойств в ValidationMessages.properties?

Мне нужно изменить сообщение @NotNull, используемое hibernate-validator.

Успешно сделали это, используя строку в ValidationMessages.properties, например: javax.validation.constraints.NotNull.message=my validation message.

Однако это не совсем то, что нужно. Не будем подробно рассказывать, почему, но все эти сообщения должны исходить из одного файла messages.properties, целью которого является не только проверка, но и другие сообщения.

Предположим, что messages.properties изначально содержит одно свойство CCCI_0001=my generic message. Можно ли как-то подставить это значение свойства из messages.properties в заполнитель в ValidationMessages.properties?


person Steve Chambers    schedule 29.01.2015    source источник
comment
Нет, извините, все сообщения проверки Hibernate должны быть объявлены внутри аннотации и не могут быть динамически внедрены с помощью аннотации @Value. Возможно, вы сможете написать собственную оболочку аннотаций, которая позволит вам вводить значения в сообщения об ошибках, но по умолчанию они не могут быть динамическими.   -  person JamesENL    schedule 30.01.2015


Ответы (1)


Что вы можете сделать, так это загрузить свой ValidatorFactory с помощью пользовательского файла MessageInterpolator. Если вы согласны использовать специальную функцию Hibernate Validator, вы можете использовать ResourceBundleLocator — см. http://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#section-custom-message-interpolation. Это выглядит примерно так:

Validator validator = Validation.byDefaultProvider()
        .configure()
        .messageInterpolator(
                new ResourceBundleMessageInterpolator(
                        new PlatformResourceBundleLocator( "MyMessages" )
                )
        )
        .buildValidatorFactory()
        .getValidator();
person Hardy    schedule 31.01.2015