我有一个带有控制器、模型、服务和验证类的 Spring mvc 应用程序。一切正常。在开发我目前拥有的东西时,我将验证消息存储在一个 messages.properties 文件中——我在这样的配置类中注册了该文件:
@Bean
public MessageSource messageSource() {
final ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
messageSource.setBasename("[package name]/messages/messages");
return messageSource;
}
在验证器中,如果用户没有回答这样的字段,我会添加一条验证消息:
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "age", "required", new Object[] {"Age"});
在 messages.properties 文件中我有这个('age' 上面是模型对象的名称,'required' 是用于在 messages.properties 文件中检索消息的键):
required = {0} is required.
好的,再次 - 这一切都很好。但我想做的是将消息外部化到数据库(基本上,这些是所有应用程序都使用的公司消息)。
我的问题是 - 如何让 Spring 使用数据库而不是 messages.properties?还是我确实使用messages.properties,只存储消息的id(数据库键)而不是消息本身?
我对该怎么做有几个想法 - 但不知道如何做任何一个。我“认为”Spring-form 标记库最终会执行获取实际消息的工作。也许我可以以某种方式拦截那个电话?或者也许以某种方式将 messageSource 更改为其他内容,而不是定义 messages.properties 文件。
无论如何,有人有什么想法吗?