Я хотел бы получить строку из пакета сообщений из управляемого JSF 2 bean. Это было бы сделано в ситуациях, когда строка используется в качестве параметра сводки или подробностей в FacesMessage
или как сообщение в исключении.
Я хочу убедиться, что управляемый bean загружает правильный набор сообщений для локали пользователя. Мне непонятно, как это сделать из управляемого bean с использованием вызовов API JSF.
Моя конфигурация:
- Использование Tomcat 7 в качестве контейнера, поэтому решение не может зависеть от вызовов API, которые работают только в контейнере полного контейнера
- Использование эталонной реализации JSF 2 (Mojarra)
- НЕ использовать библиотеки, которые позволяют CDI
ПРИМЕЧАНИЕ: Я видел этот похожий вопрос, но это зависит от функций, которые недоступны в моей конфигурации
РЕДАКТИРОВАТЬ: Я ошибся в своем первоначальном вопросе. Я хотел спросить: "Как я могу получить строку ресурса изнутри управляемого bean"? 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);
}
Кроме того, вот ссылка на еще один вопрос, который объясняет разницу между пакетами сообщений и пакетами ресурсов.