3

ユーザーごとにナビゲーションマネージドBeanがあります。

Bean からの値が必要なため、他の Bean の前に最初に初期化する必要があります。

どうすればそれを実行できますか?

試してみeager="true"ましたが、うまくいきません。

faceconfig を介した迅速かつ簡単な解決策は大歓迎です。

4

3 に答える 3

2

bean's で目的の初期化ジョブを実行するだけ@PostConstructです。

@PostConstruct
public void init() {
    // Here.
}

Bean が別の Bean から初めて注入/参照されたときに呼び出されます。

eager=true、アプリケーション スコープの Bean でのみ機能します。

于 2012-09-07T11:17:43.377 に答える
0

私が見るところから、あなたは他の豆を参照するべきです。コンテキストから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を名前で取得する

幸運なことに、私はできる限り「機能的に純粋」であり続けるように努めています。言語を考えると、それが笑えることを願っています。

于 2012-09-07T02:57:54.127 に答える