2011-10-22 21 views
1

这是对Struts 1.x的(我使用的是1.3.10)。可以将Struts 1.x Resource Bundles放置在classes目录以外的地方吗?

我注意到,Struts是无法捡起资源包中ApplicationResources.properties文件,如果它是不默认 classpath中放置的地方(例如,com.abc.SomePackage)。

举例来说,如果我把ApplicationResources.properties文件中的自定义文件夹/WEB-INF/strutsResources,因此配置在struts-config.xml:

<message-resources parameter="/WEB-INF/strutsResources/ApplicationResources"/>

我已经read的资源需要在类路径所以我也尝试将/WEB-INF/strutsResources文件夹添加到类路径中。它还是而不是拿起资源键。

我已经仔细检查strutsResources文件夹实际部署到服务器(我使用的是Glassfish v3),所以文件在那里,它只是不被解析。

P.S.

  1. 如果你想知道为什么我试图做到这一点,我只是想组织好我的代码(“更好”,IMO)。由于ApplicationResources.properties文件实际上不是一个类,因此我想将它放在资源文件夹中。
  2. 我检查了放置ApplicationResources文件中的一个包中的src目录下工作得很好。

回答

0

最终,答案是肯定的。您可以通过configuring a custom className and/or factory玩一些有趣的游戏,然后根据需要(包括从数据库中)获取消息等等。这使您可以自定义无论您想要什么 *。

我同意的资源是不是一类,但将它们放入类路径是一种常见的做法,并允许资源被加载作为资源,例如,从罐内。我很同情,但我会保持原样。

*像扭转所有文本;一个有趣的恶作剧发挥你的同事和质量保证部门。

0

它最好把它留在类路径中。

这是stadard做法,包括在classpath属性文件,特别是如果你打算在你的WAR/EAR包装起来。你把它放在WEB-INF的下面,所以你将它从类路径中移走是没有好处的,你只会混淆其他必须从事该项目的开发人员,并且必须采取措施才能使其工作。

如果你想让你的文件的外部到您部署的WAR/EAR那么这就是不使用类路径的正当理由。通常,这需要一些配置作为部署的一部分来指定文件的驻留位置。

例如指定使用

  1. JVM参数(位置例如-Dprops.file = /配置/ MyApp的。性质在)从JNDI资源
  2. 查找
  3. 使用PropertiesFactoryBean如果你使用Spring框架(我 使用Spring的ApplicationContext和Struts 1 MVC)
  4. 从数据库编写自己的 ApplicationPropertiesDAO类阅读性质初始化自己应用程序引导过程(例如Spring应用程序联系人, Servlet在web.xml中,监听器在web.xml中等)
相关问题