我目前在我的类路径上有一个名为MyResources的包,其中包含struts使用的多个属性文件。效果很好:
<constant name="struts.custom.i18n.resources" value="com.company.MyResources"/>
我正在尝试将属性文件移动到文件位置,因此可以更新它们而无需重建包。 Struts 2中是否可以引用此文件位置?
例如,我的新文件位置包含属性文件:
/g01/properties/
我希望Struts将该位置用于资源。
答案 0 :(得分:2)
是的,通过提供ResourceBundleTextProvider
的实现并在struts.xml
配置文件中初始化它。
默认实现com.opensymphony.xwork2.TextProviderSupport
将文本查找推迟到com.opensymphony.xwork2.util.LocalizedTextUtil
。
有很多方法可以解决这个问题,但如果你不需要任何默认的S2行为,那么这里就是开始的地方:
<bean type="com.opensymphony.xwork2.TextProvider" name="struts"
class="com.opensymphony.xwork2.TextProviderSupport" scope="default" />
提供您自己的ResourceBundleTextProvider
实现,它使用您想要的任何配置管理,例如,我们实现了一个DB支持的版本(当然还有缓存),允许翻译生活,并由普通DB和I18N前端。
我会看看本周末是否可以挖掘原创作品,并提供一个精简解决方案的链接。
答案 1 :(得分:1)
运行应用程序时,文件的位置不能脱离类路径。您应该确定用于加载资源的类加载器。然后,您应该找到一种方法来配置此类加载器,以便能够将该位置用作资源。所以,这是可能的。简短的回答。