我們有幾個用戶可以登錄的web應用程序。在點擊註銷按鈕時,必須處理一些邏輯。問題是大多數用戶關閉瀏覽器而不點擊註銷按鈕。我試圖通過以下方式在瀏覽器關閉時調用我的邏輯:JSF p:remotecommand和javascript事件onbeforeunload
- 將事件「onbeforeunload」添加到了我的框架集。在瀏覽器關閉時,將會調用註銷功能。
- 在我的註銷函數中,我使用primefaces p:remoteCommand組件來調用服務器上的動作偵聽器。
在當前的firefox版本中一切正常,但我有一些與IE9的問題。在IE9中關閉標籤會調用我的邏輯。關閉瀏覽器不起作用。我的JS函數被調用,但不會執行對服務器的請求。有什麼辦法可以解決這個問題嗎?順便說一句:我知道這不是一個100%的解決方案,但我們需要這個功能。我的功能和p:remoteCommand看起來像那樣。
function automaticLogout() {
handleAutomaticLogout();
alert('BlaBla');
}
<p:remoteCommand name="handleAutomaticLogout" actionListener="#{myBean.handleAutomaticLogout}" async="false" />
我目前的情況是,我必須在註銷時發佈請求的許可證。我們的會話超時時間爲30分鐘,但許可證必須在用戶離開應用程序後直接釋放。我不確定,但我認爲@PreDestroy解決方案只在會話過期時才起作用? – 2012-07-25 10:47:06
爲你增加了一個例子:-) – 8bitjunkie 2012-07-25 12:46:05
是的,我明白你的意思了 - 我的道歉,@PreDestroy需要會話被銷燬才能觸發。融合這兩種方法,通過類似PrimeFaces RemoteCommand(http://www.primefaces.org/showcase/ui/remoteCommand.jsf)的方式將Session調用(在body unload上)調用到Session destroy方法中,可以讓您立即使用戶的會話(http://www.coderanch.com/t/384874/java/java/destroying-session-when-user-closes),並導致許可證撤銷方法觸發。 – 8bitjunkie 2012-07-25 13:02:12