Я хотел бы иметь возможность получить строку из пакета сообщений из управляемого компонента JSF 2. Это может быть сделано в ситуациях, когда строка используется в качестве сводного или подробного параметра в FacesMessage
или в качестве сообщения в брошенном исключении.
Я хочу убедиться, что управляемый компонент загружает правильный пакет сообщений для локали пользователя. Мне не понятно, как это сделать из управляемого компонента с помощью вызовов API JSF.
Моя конфигурация:
- Использование Tomcat 7 в качестве контейнера, поэтому решение не может зависеть от вызовов API, которые работают только в полном контейнере сервера приложений
- Использование эталонной реализации JSF 2 (Mojarra)
- НЕ использовать библиотеки, поддерживающие CDI
ПРИМЕЧАНИЕ: Я видел этот похожий вопрос , но это зависит от функций, которые недоступны в моей конфигурации
РЕДАКТИРОВАТЬ: Я допустил ошибку в своем первоначальном вопросе. Я хотел спросить: «Как получить строку пакета resource из управляемого компонента?» BalusC дал мне правильный ответ на то, что я спросил. Решение, о котором я действительно хотел спросить, очень похоже:
public static String getResourceBundleString(
String resourceBundleName,
String resourceBundleKey)
throws MissingResourceException {
FacesContext facesContext = FacesContext.getCurrentInstance();
ResourceBundle bundle =
facesContext.getApplication().getResourceBundle(
facesContext, resourceBundleName);
return bundle.getString(resourceBundleKey);
}
Также здесь есть ссылка на другой вопрос , объясняющий разницу между пакетами "сообщения" и пакетами "ресурса".