Java 如何将另一个属性文件中的值注入ValidationMessages.properties?
我需要更改hibernate验证器使用的Java 如何将另一个属性文件中的值注入ValidationMessages.properties?,java,spring,hibernate,hibernate-validator,properties-file,Java,Spring,Hibernate,Hibernate Validator,Properties File,我需要更改hibernate验证器使用的@NotNull消息 已使用ValidationMessages.properties中的一行成功完成此操作,例如:javax.validation.constraints.NotNull.message=my validation message 然而,这并不是我们所需要的。将省去有关为什么所有这些消息都应该来自单个messages.properties文件的详细信息,该文件不仅用于验证,还用于其他消息 假设messages.properties最初包含
@NotNull
消息
已使用ValidationMessages.properties中的一行成功完成此操作,例如:javax.validation.constraints.NotNull.message=my validation message
然而,这并不是我们所需要的。将省去有关为什么所有这些消息都应该来自单个messages.properties文件的详细信息,该文件不仅用于验证,还用于其他消息
假设messages.properties最初包含一个属性
CCCI\u 0001=my generic message
。是否可以以某种方式将messages.properties中的此属性值替换为ValidationMessages.properties中的占位符?您可以做的是使用自定义的MessageInterpolator
引导您的验证器工厂。如果您愿意使用特定于Hibernate验证程序的功能,可以使用ResourceBundleLocator
-请参阅。看起来有点像这样:
Validator validator = Validation.byDefaultProvider()
.configure()
.messageInterpolator(
new ResourceBundleMessageInterpolator(
new PlatformResourceBundleLocator( "MyMessages" )
)
)
.buildValidatorFactory()
.getValidator();
不,抱歉,所有Hibernate验证消息必须在注释内声明,并且不能使用@Value注释动态注入。您可以编写一个自定义注释包装器,允许您将值注入错误消息中,但默认情况下它们不能是动态的