私はjsf2、spring、hibernateを使ってWebアプリケーションを開発しています。 (getBundleのを使用して)そのキーからのメッセージを取得するためのプロパティファイルを読み込みJSFアプリケーションスコープのマネージドBeanの注入
- :
私は
は、次のような方法で、utilのJSFと(「utilsJSF」と呼ばれる)マネージドBeanを「アプリケーションがスコープ」持っています。 - 後でビューに表示する文字列をfacesmessageとして追加します。
- など
すべての私のコントローラはこの1つを拡張し、それらのユーティリティにアクセスできるように、私は、(「管理プロパティ」のように)私の「ベースコントローラ」で、このBeanを注入します。ここで私は問題ありません。
しかし、これらのユーティリティを「マネージドBean」以外の他のクラスから使用するにはどうすればよいですか?
私は自分自身を説明します:
キーは例外の名前で、値がメッセージここで私は、それぞれの特定の例外クラスは、リソースバンドル(プロパティファイル)にアクセスしなければならない例外階層を持っています私はユーザーに見せます。例外コンストラクタはファイルから値を取得し、それを例外のフィールドに格納し、コントローラはメッセージをfacesmessageとしてユーザに表示します。
"utilsJSF"マネージドBeanを使用してコントローラからメッセージを表示することができます。これはBaseControllerに注入したためです。
しかし、(例外クラスはマネージドBeanではないので)使用するためには、例外クラスに "utilsJSF"を挿入できません。
この問題を解決する最適なソリューションは何ですか?
ありがとうございますBalusC。私の第一の解決策は静的メソッドを使うことでした。私はちょうど別の方法が存在するかどうか疑問に思っていた。実際、私はウェブサイトでそれを読んだだけで、アプリケーションスコープのbeanにutilsメソッドを置こうとしました。しかし、アプリケーションスコープのBeanはアプリケーションのデータ(定数、静的リストなど)を格納するためのものであり、ユーティリティメソッドを保持するものではないと思いますか?ありがとう、私はあなたに非常に感謝し、あなたのウェブを読む。 (申し訳ありませんが、私の英語はあまり良くありませんが、私はスペイン出身です)。 – choquero70
クラスが状態を保持していない場合、それをステートフルなクラスにする必要はありません。ただし、アプリケーションスコープのBeanは、静的なドロップダウンリストなどのビューにアプリケーション全体のデータを公開するのに便利です。 – BalusC