2011-09-08 77 views
1

我使用gwt 2.3與gwtp框架。在這個應用程序中,我想保持5分鐘的會話時間。這意味着如果當前用戶沒有做到5分鐘,並且他在5分鐘之後他在屏幕上的第一個事件/行動應該被註銷。 在gwt中有類可以用於這個問題的定時器。但我沒有得到如何識別用戶在屏幕上的動作。我做過谷歌,&找到代碼gwt-ext.Below是代碼GWT-EXTgwt客戶端會話超時

Ext.get(「pagePanel」).addListener(「click」, new EventCallback() { 
    @Override 
    public void execute(EventObject e) { 
     MessageBox.alert(「On Mouse Click」); 
    } 
}); 

Ext.get(「pagePanel」).addListener(「keydown」, new EventCallback() { 

    @Override 
    public void execute(EventObject e) { 
     MessageBox.alert(「On Key Press Click」); 
    } 
}); 

在上面的代碼標籤在正常工作的,所以我從那裏我得到這個代碼粘貼鏈接。 here

相同類型的代碼我正在尋找gwt.If有任何其他更好的方法來做到這一點,請讓我知道。在此先感謝

回答

3

如果動作/事件可真對一切,我會在下面的方式 NativePreviewHandler解決它:

boolean expired; 

final Timer logoutTimer = new Timer() { 
    @Override 
    public void run() { 
     expired = true; 
    } 
}; 

NativePreviewHandler nph = new NativePreviewHandler() { 

    @Override 
    public void onPreviewNativeEvent(NativePreviewEvent event) { 
     if (!expired) { 
      logoutTimer.cancel(); 
      logoutTimer.schedule(300000); 
     } else { 
      // do your logout stuff here 
     } 
    } 
}; 

Event.addNativePreviewHandler(nph); 

如果用戶shell註銷不含5分鐘後新的動作:

final Timer logoutTimer = new Timer() { 
    @Override 
    public void run() { 
     // do your logout stuff here 
    } 
}; 

NativePreviewHandler nph = new NativePreviewHandler() { 

    @Override 
    public void onPreviewNativeEvent(NativePreviewEvent event) { 
     // Of course do this only when logged in: 
     logoutTimer.cancel(); 
     logoutTimer.schedule(300000); 
    } 
}; 

Event.addNativePreviewHandler(nph); 
+0

@是否有任何其他方式來處理客戶端會話 –