有没有办法让Struts 2资源包指向文件位置?

时间:2014-07-18 15:47:36

标签: struts2

我目前在我的类路径上有一个名为MyResources的包,其中包含struts使用的多个属性文件。效果很好:

<constant name="struts.custom.i18n.resources" value="com.company.MyResources"/>

我正在尝试将属性文件移动到文件位置,因此可以更新它们而无需重建包。 Struts 2中是否可以引用此文件位置?

例如,我的新文件位置包含属性文件:

/g01/properties/

我希望Struts将该位置用于资源。

2 个答案:

答案 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)

运行应用程序时,文件的位置不能脱离类路径。您应该确定用于加载资源的类加载器。然后,您应该找到一种方法来配置此类加载器,以便能够将该位置用作资源。所以,这是可能的。简短的回答。