Hibernate Validator、自定义 ResourceBundleLocator 和 Spring
我正在尝试覆盖休眠验证 4.1 中的默认 ResourceBundleLocator。到目前为止,它工作得很好,但其使用的唯一示例包括用于实例化 ValidationFactory 的 java 代码。
当使用 Spring 的 Web 应用程序时,会自动配置休眠验证(只有合适的休眠验证 *.jar 文件应该存在,并且会自动使用)。在这种情况下我该如何替代 ResourceBundleLocator?我没有在任何属性或 applicationContext.xml 文件中看到任何指定自定义 ResourceBundleLocator 的方法。
I'm trying to override default ResourceBundleLocator in hibernate validation 4.1. So far it works perfectly, but the only examples of its usage include java code to instantiate ValidationFactory.
When using a web application with spring hibernate validation is automatically configured (only the suitable hibernate validation *.jar file should exist and it is automatically used). How can i substitute ResourceBundleLocator in that scenario? I do not see any way of specyfing my custom ResourceBundleLocator in any properties or applicationContext.xml file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
完成所需工作的神奇方法是 LocalValidatorFactoryBean#setValidationMessageSource(MessageSource messageSource)。
首先,该方法的合同:-
您可以通过调用此方法来指定自定义 message.properties(或 .xml)...像这样...
my-beans.xml
validation_errors.properties
Person.java
BeanValidationTest.java
输出:
自定义消息:- MyNotNullMessage
The magic method that does the required job is LocalValidatorFactoryBean#setValidationMessageSource(MessageSource messageSource).
First of all, contract of the method:-
You can specify your custom message.properties(or .xml) by invoking this method... like this...
my-beans.xml
validation_errors.properties
Person.java
BeanValidationTest.java
Outupt:
Custom Message:- MyNotNullMessage
如果您想混合现有的休眠验证消息和自定义验证消息,这里有一个解决方案:(
请参阅Web MVC 框架验证部分 和 在 Spring 文档中配置 Bean 验证提供程序)
Here is a solution if you want to mix the existing hibernate validation messages and custom validation messages :
(see Web MVC framework Validation section and Configuring a Bean Validation Provider in Spring documentation)
谢谢@Lu55,根据你的回答我解决了我的问题!
我刚刚转换为 Configuration 类,我在这里发布以防万一其他人需要:
导入详细信息:它对我来说适用于 ReloadableResourceBundleMessageSource,但使用 ResourceBundleMessageSource 则不起作用。我不知道为什么。
在我的资源文件夹中,我有 message.properties 文件。
Thank you @Lu55, based on your answer I solved my problem!!
I just converted to a Configuration class, and I am posting here just in case anyone else need:
Import detail: it worked for me with ReloadableResourceBundleMessageSource, but it did not work using ResourceBundleMessageSource. I am not sure why.
Inside my resource folder I have message.properties file.