【问题标题】:Can Struts 1.x Resource Bundles be placed elsewhere than the classes directory?Struts 1.x 资源包可以放在classes 目录以外的地方吗?
【发布时间】:2011-10-22 08:11:17
【问题描述】:

这适用于 Struts 1.x(我使用的是 1.3.10)。

我注意到,如果 ApplicationResources.properties 文件中的资源包没有放置在 default 类路径中的某个位置(例如,@ 987654323@)。

例如,如果我将ApplicationResources.properties 文件放在自定义文件夹/WEB-INF/strutsResources 中并这样配置struts-config.xml:

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

read 认为资源需要位于类路径中,因此我还尝试将 /WEB-INF/strutsResources 文件夹添加到类路径中。它仍然获取资源密钥。

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

附:

  1. 如果您想知道我为什么要这样做,我只是想更好地组织我的代码(“更好”,IMO)。由于ApplicationResources.properties 文件并不是一个真正的类,我想将它单独放在资源文件夹中。
  2. 我检查过将 ApplicationResources 文件放在 src 目录中的包中可以正常工作。

【问题讨论】:

    标签: struts struts-1


    【解决方案1】:

    最终,答案是肯定的。您可以通过configuring a custom className and/or factory 玩一些有趣的游戏,并随心所欲地获取消息(包括来自数据库)等等。这允许您自定义任何您想要的*。

    我同意这些资源不是一个类,但将它们放在类路径中是一种常见的做法,并且允许将资源作为资源加载,例如从 jar 中加载。我很同情,但我会保持原样。

    *喜欢反转所有的文字;对您的同事和 QA 部门进行的一个有趣的恶作剧。

    【讨论】:

      【解决方案2】:

      最好把它留在类路径中。

      在类路径中包含属性文件是标准做法,尤其是当您计划将其打包到 WAR/EAR 中时。您将其保留在 WEB-INF 下,因此将其移出类路径不会带来任何好处,而且您只会使其他必须从事该项目的开发人员感到困惑,并且您必须进行破解才能使其工作.

      如果您想将文件保留在可部署的 WAR/EAR 之外,那么这就是不使用类路径的正当理由。通常,这需要在部署过程中进行一些配置,以指定文件所在的位置。

      例如使用指定位置

      1. JVM 参数(例如 -Dprops.file=/config/myapp.properites)
      2. 从 JNDI 资源中查找
      3. 如果您使用的是 Spring 框架(我 将 Spring 的 ApplicationContext 与 Struts 1 MVC 一起使用)
      4. 从编写您自己的数据库中读取属性 初始化自身的 ApplicationPropertiesDAO 类 应用程序引导过程(例如 Spring 应用程序联系人, web.xml 中的 Servlet、web.xml 中的 Listener 等)

      【讨论】:

        猜你喜欢
        • 2017-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 1970-01-01
        • 1970-01-01
        • 2013-03-09
        • 1970-01-01
        相关资源
        最近更新 更多