我有一个带有Controller、Model、Service和Validation类的Spring mvc应用程序。一切都很好。在开发当前拥有的内容时,我将验证消息存储在一个messages.properties文件-which中,我在configuration类中注册了该文件,如下所示:
@Bean
public MessageSource messageSource() {
final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("[package name]/messages/messages");
return messageSource;
}在Validator中,如果用户没有回答这样的字段,我会添加一条验证消息:
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "age", "required", new Object[] {"Age"});在messages.properties文件中(上面的'age‘是模型对象的名称,'required’是用于在messages.properties文件中检索消息的键):
required = {0} is required.好了,再说一遍,-this一切都很好。但我想要做的是将消息外部化到数据库中(基本上,这些消息是所有应用程序都使用的企业消息)。
我的问题是,我能让-how使用数据库而不是messages.properties吗?或者我确实使用了messages.properties,只存储消息的id (数据库键),而不是消息本身?
我有几个想法,-but不知道如何做任何一个。我“认为”Spring-form标签库最终会执行获取实际消息的工作。也许我可以截获那个电话?或者可能以某种方式将messageSource更改为其他内容,而不是定义messages.properties文件。
不管怎样,有没有人有什么想法?
发布于 2012-10-26 07:39:58
不使用ResourceBundleMessageSource,而是使用自定义MessageSource实现,它返回到DB中。不幸的是,Spring本身没有这样的实现,就像在jira问题中描述的那样:https://jira.springsource.org/browse/SPR-364
但是实现jira接口很简单,您甚至可以看到一个附加到MessageSource问题上的示例实现:https://jira.springsource.org/secure/attachment/10261/JdbcMessageSource.java
发布于 2018-04-11 18:25:44
您可以尝试使用Errors.rejectValue(String field, String errorCode, String defaultMessage)方法。我也有同样的问题。在我的例子中,我使用了...errors.rejectValue("firstName", "error.firstName", "plz enter ur first name!!.");
理想情况下,这应该在无法从消息源中找到错误代码的情况下使用defaultMessage。
https://stackoverflow.com/questions/13071801
复制相似问题