JSF 2 マネージド Bean 内のメッセージ バンドルから文字列を取得できるようにしたいと考えています。FacesMessage
これは、文字列が概要または詳細パラメーターとして、またはスローされた例外のメッセージとして使用される状況で行われます。
マネージド Bean がユーザーのロケールに適したメッセージ バンドルをロードすることを確認したいと考えています。JSF API 呼び出しを使用してマネージド Bean からこれを行う方法が明確ではありません。
私の構成は次のとおりです。
- コンテナーとして 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);
}
また、 「メッセージ」バンドルと「リソース」バンドルの違いを説明する別の質問へのリンクを次に示します。