ユーザーごとにナビゲーションマネージドBeanがあります。
Bean からの値が必要なため、他の Bean の前に最初に初期化する必要があります。
どうすればそれを実行できますか?
試してみeager="true"
ましたが、うまくいきません。
faceconfig を介した迅速かつ簡単な解決策は大歓迎です。
ユーザーごとにナビゲーションマネージドBeanがあります。
Bean からの値が必要なため、他の Bean の前に最初に初期化する必要があります。
どうすればそれを実行できますか?
試してみeager="true"
ましたが、うまくいきません。
faceconfig を介した迅速かつ簡単な解決策は大歓迎です。
bean's で目的の初期化ジョブを実行するだけ@PostConstruct
です。
@PostConstruct
public void init() {
// Here.
}
Bean が別の Bean から初めて注入/参照されたときに呼び出されます。
はeager=true
、アプリケーション スコープの Bean でのみ機能します。
私が見るところから、あなたは他の豆を参照するべきです。コンテキストからBeanをプルできるユーティリティクラスがあると仮定しましょう。
基本的に->
//Bean A
public void doSomething()
{
String required = Utility.getBeanB().getRequiredValue();
use(required);
}
...
//Bean B
public String getRequiredValue()
{
return "Hi, I'm a required value";
}
ユーザー設定や共有オブジェクトなどを格納する「SessionBean」を備えた大規模なWebアプリがいくつかありますが、このメソッドは完全に機能します。Beanへの参照を使用することで、初期化を連鎖させる必要がなくなります。そのメソッドは常に他のBeanのメソッドに依存するため、初期化の順序が保証されます。
Beanにアクセスするにはさまざまな方法がありますが、私は通常ELルートを経由します->
サーブレット関連のクラスでJSFマネージドBeanを名前で取得する
幸運なことに、私はできる限り「機能的に純粋」であり続けるように努めています。言語を考えると、それが笑えることを願っています。