Переопределение стандартного ResourceBundle в приложении Struts - PullRequest
0 голосов
/ 05 августа 2011

У меня есть файл свойств, который связан с внешним файлом JAR в моем WEB-INF / lib.Если я хочу переопределить значения в этом файле свойств и использовать мои собственные значения из моего собственного файла свойств.Есть ли лучший способ сделать это.Например: в файле свойств по умолчанию я вижу

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 Ответ

1 голос
/ 05 августа 2011

Я вижу три способа сделать это.

  1. просто поместите ваш файл свойств в путь к классу, но перед файлом свойств, который вы хотите переопределить.Помещение в WEB-INF / classes должно работать.
  2. Измените файл jar и удалите из него файл свойств
  3. Создайте класс с тем же базовым именем, что и у файла свойств, и делегируйте егоФайл свойств в классе для реализации комплекта.Посмотрите API ResourceBundle , чтобы понять, как загружаются пакеты ресурсов.Файл класса будет загружен перед файлом свойств для заданного базового имени пакета и локали.

Обратите внимание, что если все, что вы хотите сделать, это настроить displaytag, вам просто нужно поместить свой displaytag.propertiesв корне пути к классам (то есть в пакете по умолчанию), а не в пакете org.displaytag.properties, как указано здесь .Displaytag загрузит ваш пакет, а не стандартный, если он найден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...