2

JSF 2.0 でページの unLoad イベントを処理する方法はありますか? ユーザーが特定のページから移動するたびに、データのリセットを実行したいですか?

4

1 に答える 1

3

unloadイベントについてサーバー側に通知する100%信頼できる方法はありません。ブラウザのメーカー/バージョンに応じて、サーバーがajax(XMLHttpRequest)リクエストにまったくヒットしないか、ajaxリクエストが正常に完了できる場合(ajaxリクエストが突然中止されたため)、競合状態に陥ります。タブ/ウィンドウが閉じているため、サーバーが完全なajaxリクエストを取得しないリスクがあります)。

最善の策は、サーバー側で破棄イベントをフックすることです。たとえば、@ViewScopedBeanの場合は、次の注釈が付いたメソッドを作成する必要があります@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 に答える