如何将另一个属性文件中的值注入 ValidationMessages.properties?
How to inject values from another properties file into ValidationMessages.properties?
我需要更改 hibernate-validator 使用的 @NotNull
消息。
已使用 ValidationMessages.properties 中的一行成功完成此操作,例如:javax.validation.constraints.NotNull.message=my validation message
.
然而,这并不是我们所需要的。将保留有关原因的详细信息,但所有这些消息都应源自单个 messages.properties 文件,其目的不仅用于验证,还用于其他消息。
假设 messages.properties 最初包含单个 属性 CCCI_0001=my generic message
。是否有可能以某种方式将 messages.properties 中的 属性 值替换为 ValidationMessages.properties 中的占位符?
您可以做的是 bootstrap 您的 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();
我需要更改 hibernate-validator 使用的 @NotNull
消息。
已使用 ValidationMessages.properties 中的一行成功完成此操作,例如:javax.validation.constraints.NotNull.message=my validation message
.
然而,这并不是我们所需要的。将保留有关原因的详细信息,但所有这些消息都应源自单个 messages.properties 文件,其目的不仅用于验证,还用于其他消息。
假设 messages.properties 最初包含单个 属性 CCCI_0001=my generic message
。是否有可能以某种方式将 messages.properties 中的 属性 值替换为 ValidationMessages.properties 中的占位符?
您可以做的是 bootstrap 您的 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();