2011-08-05 46 views
0

我有一個屬性文件捆綁在我的WEB-INF/lib的外部jar文件中。如果我想覆蓋該屬性文件中的值並使用我自己的屬性文件中的值。有沒有更好的方法來做到這一點。 例如: 默認屬性文件,我看到覆蓋Struts App中的默認ResourceBundle

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()); 

     } 
    } 
} 

我不太確定從這裏開始重寫捆綁對象中的鍵值對以從我自己的屬性文件獲取新值。任何幫助,我會大大appriciated!提前致謝!

回答

1

我看到了三種方法。

  1. 只是將您的屬性文件放在類路徑中,但在要覆蓋的屬性文件之前。把它放在WEB-INF/classes中應該可以工作。
  2. 更改jar文件並從中刪除屬性文件
  3. 創建一個與屬性文件具有相同基本名稱的類,並委託給類中的屬性文件以實現該包。瞭解如何加載資源包。請參閱ResourceBundle api doc。類文件將在給定包基本名稱和區域設置的屬性文件之前加載。

請注意,如果你想要做的是定製displaytag,你只要把你的displaytag.properties在classpath的根目錄(即默認包),而不是在org.displaytag.properties包,記錄here。如果找到,Displaytag將加載你的包而不是默認包。

+0

非常感謝!這很好用! – universer