1

リスナーメソッドに次のコードがあります。

FacesContext.getCurrentInstance().getExternalContext().getRequestMap().put("time", new Date());

ボタンがクリックされると、次のコードが実行されます

System.out.println(FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("time"));

現在のリクエストの処理中にリスナーが実行されなかった場合、「時間」がnullであることを除いて可能ですが、「時間」オブジェクトはリクエスト処理後も存続しているようです。ですから、過去に「時間」が設定されると、そこにとどまることがあります... 誰かこれを説明できますか? ありがとう。

4

1 に答える 1

0

ここで答えを見つけました: http://wiki.icefaces.org/display/ICE/Compatibility Scopes

デフォルトでは、ICEfaces 1.x は、拡張リクエスト スコープと呼ばれるものの下で動作しました。簡単に言えば、拡張されたリクエスト スコープとは、新しいリクエストがビューの変更にのみ関連付けられるという動作を指します。これは、既存のビュー内で発生する Ajax リクエストが、ICEfaces によって新しいリクエストとして扱われないことを意味します。新しいビューが作成されない限り、リクエストは新しいリクエストとは見なされないため、リクエストスコープの Bean は新しいビューが作成されるまで再作成されません。この動作は、要求スコープのより標準的な定義を可能にするために構成可能でしたが、既存の標準スコープ (要求、セッション、アプリケーション、なし) が十分に細分化されていなかったため、当時は必要であると考えられていました。

于 2010-04-27T08:42:53.270 に答える