Как получить доступ к свойствам из другого проекта в java, используя resource-bundle? - PullRequest
0 голосов
/ 18 апреля 2019

Моя текущая проблема в том, что я не могу получить доступ к одному конкретному файлу свойств, где другие могут быть успешно загружены.

Структура моего проекта выглядит так:

- project1
  - src
    - main
      - resources
        - prj1res
          - messages_en + messages_de + labels_en + labels_de.properties
- project2
  - src
    - main
      - resources
        - messages_en + messages_de + labels_en + labels_de.properties

Свойства в проекте1 / src / main / resources / prj1res используются только для этого проекта. Свойства в project2 также используются в нескольких других проектах (project1, project *, ...).

Я использую Eclipse (Java с Maven) и внедряю свои приложения как * .ear в WebLogic (project1.ear -> внутри project1.war и project2.jar).

Мои лица-config.xml (проект1) выглядит так:

    <application>
        <locale-config>
            <default-locale>en</default-locale>
            <supported-locale>de</supported-locale>
        </locale-config>

        <resource-bundle>
            <base-name>prj1res.labels</base-name>
            <var>label</var>
        </resource-bundle>

        <resource-bundle>
            <base-name>prj1res.messages</base-name>
            <var>msg</var>
        </resource-bundle>

        <resource-bundle>
            <base-name>labels</base-name>
            <var>clabel</var>
        </resource-bundle>

        <resource-bundle>
            <base-name>messages</base-name>
            <var>cmsg</var>
        </resource-bundle>
    </application>

В проекте 1 у меня нет проблем с загрузкой правильного файла свойств. Для проекта 2 я удалил messages.properties и tags.properties для тестирования. Дело в том, что (для project2) все метки _ *. Свойств для локали "de" или "en" найдены (вызываются из bean-компонента через ResourceBundle или из xhtml-страницы через clabel), но файл messages_de.properties не найден.

Если я использую язык английский, все работает нормально, но если я перехожу на немецкий (де), этикетки переводятся правильно, а сообщения - нет. Я получаю исключение MissingResourceException: не могу найти пакет для сообщений с базовым именем, локаль de.

Но почему label_de.properties загружается правильно? Там в одной упаковке.

В отладке я достиг этой точки:

    public ResourceBundle getResourceBundle() {
        return ResourceBundle.getBundle(resourceBundleName, FacesContext
                .getCurrentInstance().getViewRoot().getLocale());
    }

FacesContext ... getLocale () показывает на этом этапе правильный язык (de или en) и resourceBundleName (сообщения или метки).

Может быть, вы можете мне помочь.

...