java - 覆盖 Struts 应用程序中的默认 ResourceBundle

标签 java struts

我有一个属性文件,它捆绑在我的 WEB-INF/lib 中的外部 jar 文件中。如果我想覆盖该属性文件中的值并使用我自己的属性文件中的值。有没有更好的方法来做到这一点。 例如: 在默认属性文件中,我看到

banner.ad.link=<a href="{1}" title="Click here {0}">{0}</a>

我想将其更改为:

banner.ad.link=<a class="mycss" href="{1}" title="Click here {0}">{0}</a>

到目前为止,这就是我所拥有的:

public class MainListener implements ServletContextListener {

    public void contextInitialized(ServletContextEvent event)
    {

        ResourceBundle bundle =  ResourceBundle.getBundle("com.comResources");


        bundle =  ResourceBundle.getBundle("org.displaytag.messages",
                Locale.getDefault());        
        for (Enumeration<String> e = bundle.getKeys(); e.hasMoreElements() ;) {
            System.out.println(e.nextElement());

        }
    }
}

我不太确定从这里到哪里去覆盖捆绑对象中的键值对,以从我自己的属性文件中获得新值。任何帮助,我将不胜感激!提前致谢!

最佳答案

我看到了三种方法。

  1. 只需将属性文件放入类路径中,但放在要覆盖的属性文件之前。将其放在 WEB-INF/classes 中应该可以。
  2. 更改 jar 文件并从中删除属性文件
  3. 创建一个与属性文件具有相同基名的类,并委托(delegate)给该类中的属性文件来实现该包。请参阅ResourceBundle api doc了解资源包是如何加载的。对于给定的包基本名称和区域设置,类文件将在属性文件之前加载。

请注意,如果您只想自定义 displaytag,则只需将 displaytag.properties 放在类路径的根目录中(即默认包中),而不是放在 org.displaytag.properties 中。包,如记录的 here 。如果找到,Displaytag 将加载您的 bundle 而不是默认 bundle 。

关于java - 覆盖 Struts 应用程序中的默认 ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957806/

相关文章:

java - Android 上具有自定义颜色的布局中的圆角

java - 用于安排任务的 Cron 表达式

java - Hello World 示例 struts 时序图

java - 异常由于从互联网/本地引用 struts.dtd 文件

Java EE/Struts 异常处理

java - Spring MVC - 当整数值为零时如何显示空白文本框

java - 访问 Firebase 中的项目数组

java - hprof 探查器输出不包括行号,无论 `lineno` 值如何

java - 如何使用struts taglib将参数传递给javascript函数?

java - Struts 2中Action的Name属性可以是路径吗?