2

Web アプリをサポートする Session Scoped マネージド Bean があります。この Web アプリでは、ユーザーがユーザー ID と日付を含む URL を実行できるようにしたいと考えています。これにより、マネージド Bean でメソッドがトリガーされ、Web アプリがそのユーザー ID と日付にジャンプします。

簡単な答えは、マネージド Bean のコンストラクターに URL からパラメーターを抽出するためのコードを配置することです。しかし問題は、それがセッション スコープであるという事実にあるため、コンストラクターは初期ロード時にのみ呼び出されます。ユーザーが Web アプリを開いて操作し、新しいパラメーターを使用して URL を実行すると、コンストラクターを呼び出す方法がありません。

セッション状態に関係なく、アプリケーション URL が実行されるたびに (ページがロードされるたびに) マネージド Bean でメソッドを実行できる方法はありますか?

4

1 に答える 1

2

ビューによって呼び出されるゲッターにジョブをハックすることで可能ですが、そうではありません。セッション スコープ Bean は、同じセッション内のすべてのブラウザ ウィンドウ/タブ間で共有されます。ウィンドウ/タブのすべての変更は、他のすべてのウィンドウ/タブに影響します。これは「wtf?」につながる可能性があります。したがって、サイトの一般的な UX (ユーザー エクスペリエンス) に悪影響を及ぼします。

GET リクエストをインターセプトする場合は、その Bean をリクエスト スコープに配置する必要があります。または、JSF 2.0 を使用している場合は、最初の GET リクエストの後に後続の POST リクエストで状態を維持する場合はビュー スコープに配置する必要があります。セッション スコープ Bean は、ログイン ユーザー、その設定などのセッション スコープ データを保持することを目的としています。リクエスト パラメータなどのリクエスト スコープのデータは対象外です。

于 2011-08-29T18:28:30.633 に答える