10

JSFでページを離れるときにメソッドを呼び出す方法はありますか?

4

4 に答える 4

6

ネイティブJSFまたはPrimeFacesを使用している場合は除きます。代わりに、セッションの有効期限をフックするのが最善の策です。

import javax.inject.Named;
import javax.enterprise.context.SessionScoped;

@Named
@SessionScoped
public class Bean implements Serializable {

    @PreDestroy
    public void destroy() {
        // Your code here.
    }
}

JSFユーティリティライブラリOmniFacesを使用する場合は、そのを使用できます@ViewScoped@PreDestroyこれは、ビュースコープのBeanを参照してページを離れるときにを呼び出します。

import javax.inject.Named;
import org.omnifaces.cdi.ViewScoped;

@Named
@ViewScoped
public class Bean implements Serializable {

    @PreDestroy
    public void destroy() {
        // Your code here.
    }
}

裏では、同期XHRへのフォールバックを使用しnavigator.sendBeacon()てウィンドウイベント中にをトリガーすることで機能します(これは、をサポートする最新のブラウザーでは非推奨です)。beforeunloadnavigator.sendBeacon()

参照:

于 2012-04-03T02:44:55.043 に答える
3

バッキングBeanでomnifaces@ViewScopedアノテーションを使用すると、ビューを離れるとBeanオブジェクトが破棄されます。そのため、@ PreDestroyアノテーションを使用して、これが発生したときに関数を呼び出すことができます。

:omnifaces@ViewScopedアノテーションを使用する必要があります。標準のJSF@ViewScopedアノテーションを使用すると、ビューを離れただけではオブジェクトが破棄されないため、インポートに注意してください。

出典: http ://showcase.omnifaces.org/cdi/ViewScoped

于 2017-12-22T08:05:05.240 に答える
2

あなたの問題解決策:-それはJavaスクリプトで動作します

    <head>
<title>onunload test</title>
<script type="text/javascript">
window.onunload = unloadPage;

function unloadPage()
{
 alert("unload event detected!");
}
</script>
</head>

また、詳細についてはいくつかのリンク:- リンク

于 2012-04-04T04:48:15.390 に答える
0

以下のように、ページを閉じたり、別のページに移動したりするときに、を使用してページ本体の「 onunload」イベントで<a4j:jsFunction/>呼び出すことにより、JSFマネージドBeanメソッドを呼び出すことができます。

<body onunload="leavingPage()">

<a4j:jsFunction name="leavingPage" action="#{myBean.myMethod}"/>
于 2012-04-03T08:27:43.447 に答える