Моя текущая проблема в том, что я не могу получить доступ к одному конкретному файлу свойств, где другие могут быть успешно загружены.
Структура моего проекта выглядит так:
- 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 (сообщения или метки).
Может быть, вы можете мне помочь.