我有一个属性文件,它捆绑在我的 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());
}
}
}
我不太确定从这里到哪里去覆盖捆绑对象中的键值对,以从我自己的属性文件中获得新值。任何帮助,我将不胜感激!提前致谢!
最佳答案
我看到了三种方法。
- 只需将属性文件放入类路径中,但放在要覆盖的属性文件之前。将其放在 WEB-INF/classes 中应该可以。
- 更改 jar 文件并从中删除属性文件
- 创建一个与属性文件具有相同基名的类,并委托(delegate)给该类中的属性文件来实现该包。请参阅ResourceBundle api doc了解资源包是如何加载的。对于给定的包基本名称和区域设置,类文件将在属性文件之前加载。
请注意,如果您只想自定义 displaytag,则只需将 displaytag.properties 放在类路径的根目录中(即默认包中),而不是放在 org.displaytag.properties
中。包,如记录的 here 。如果找到,Displaytag 将加载您的 bundle 而不是默认 bundle 。
关于java - 覆盖 Struts 应用程序中的默认 ResourceBundle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6957806/