JSF 2.0 でページの unLoad イベントを処理する方法はありますか? ユーザーが特定のページから移動するたびに、データのリセットを実行したいですか?
3549 次
1 に答える
3
unload
イベントについてサーバー側に通知する100%信頼できる方法はありません。ブラウザのメーカー/バージョンに応じて、サーバーがajax(XMLHttpRequest
)リクエストにまったくヒットしないか、ajaxリクエストが正常に完了できる場合(ajaxリクエストが突然中止されたため)、競合状態に陥ります。タブ/ウィンドウが閉じているため、サーバーが完全なajaxリクエストを取得しないリスクがあります)。
最善の策は、サーバー側で破棄イベントをフックすることです。たとえば、@ViewScoped
Beanの場合は、次の注釈が付いたメソッドを作成する必要があります@PreDestroy
。
@ManagedBean
@ViewScoped
public class Bean {
@PreDestroy
public void destroy() {
// This method is called whenever the view scope has been destroyed.
// That can happen when the user navigates away by a POST which is
// invoked on this bean, or when the associated session has expired.
}
}
あるいは、まったく必要ないかもしれません。セッションスコープのBeanではなく、ビュースコープのBeanのプロパティとしてデータを格納する必要があります。セッションスコープのBeanを悪用している開発者は、この種の要件を頻繁に抱えています;)適切なBeanスコープを選択する方法も参照してください。
于 2012-04-22T20:53:38.707 に答える