2010-05-04 101 views
5

我正在開發一個使用GXT,Hibernate,mysql等的Web應用程序。應用程序有一個登錄頁面。實際上,當會話過期時,我遇到了設置登錄頁面的問題。我們可以在web.xml文件中設置超時時間,但在這種情況下,我們不能重定向到登錄頁面。可以告訴我如何實現這一點。GXT:如何在會話過期時引入登錄頁面

回答

2

我用當會話過期時在服務器端拋出異常的概念,然後試圖在客戶端捕獲異常。我不知道是否有更好的方法來做到這一點。

2

在服務器端,您可以檢查會話是否過期,如果是,則拋出自定義異常。 在客戶端,在每次異步調用時,都會檢查這種已知情況並對其做出反應。您可以創建AsyncCallback一個抽象類,你將繼承每個GWT RPC調用:

public abstract class SessionExpiredAwareAsyncCallback<T> implements AsyncCallback<T> { 

    @Override 
    public void onSuccess(T returnObject) { 
     doOnSuccess(returnObject); 
    } 

    @Override 
    public void onFailure(Throwable exception) { 
     if (exception instanceof SessionExpiredException) { 
      goToLoginPage(); 
     } else { 
      doOnFailure(exception); 
     } 
    } 

    public abstract doOnSuccess(T returnObject); 

    public abstract doOnFailure(Throwable exception); 
} 
1

您可以使用gwteventservice從服務器到客戶端觸發一個事件。

相關問題