我有一个弹簧网络应用程序需要按照以下方式工作
将从两个不同的网址www.domain1.com和www.domain2.com
访问该应用程序并且要求两个URL看起来像两个不同的应用程序,具有不同的CSS和I18n。
对于css部分已经完成但我仍然坚持使用i18n部分
如何根据域名使弹簧加载不同的i18n属性文件?
我想到的解决方案是实现一个检查请求URL的过滤器,并根据URL清除消息源bean并加载所需的i18n文件,但它对性能不太好看
顺便说一下我使用的是ReloadableResourceBundleMessageSource消息源
另一种解决方案是实现两个不同的消息源。 这个解决方案的问题是从源代码我可以管理我使用的bean但是如何告诉fmt:message标签使用哪个数据源?
提前致谢并提出最好的问候
答案 0 :(得分:1)
我建议使用LocaleResolver
。这是一个标准的Spring接口,可以完成这类工作。
基于Web的区域设置的界面 允许的解决策略 通过请求进行区域设置解析 和请求修改区域设置 和回应。
此界面允许 基于请求的实现, 会话,饼干等。
LocaleResolver
的预定义实现并不能满足您的需求,但编写自己的实现却微不足道。您的实现将被要求确定每个请求的区域设置,然后Spring的i18n代码使用此信息,包括ReloadableResourceBundleMessageSource
。您只需在上下文中声明您的LocaleResolver
bean,它就会被自动拾取。
然后,您的资源包将使用标准的java语言环境机制来解析当前语言环境的正确消息。