2010-05-04 6 views
5

Sto sviluppando un'applicazione web usando GXT, Hibernate, mysql ecc. Esiste una pagina di accesso per l'applicazione. In realtà ho problemi a impostare la pagina di accesso quando scade la sessione. Possiamo impostare il timeout nel file web.xml ma in tal caso non possiamo reindirizzare alla pagina di accesso. Puoi dirmi come ottenerlo.GXT: Come portare la pagina di accesso quando scade la sessione

risposta

2

ho usato il concetto di un'eccezione nel lato server quando la sessione scade e poi ha cercato di catturare l'eccezione nel lato client. Non so se c'è un modo migliore per farlo.

2

Non è possibile eseguire un reindirizzamento lato server perché l'applicazione è interamente AJAX. Quello che puoi fare è usare la classe GWT Timer e per ognuna delle tue chiamate RPC controllare/azzerare il timer. Se la "sessione" scade, esegui un reindirizzamento alla pagina di accesso tramite un token della cronologia. Questo è stato il modo più semplice per me

Qualche altra lettura:

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/b9eab8daaa993c83/d0192d356045e061?pli=1

http://gwt-ext.com/forum/viewtopic.php?f=9&t=1682

2

Sul lato server, è possibile verificare se la sessione è scaduta e, in tal caso, generare un'eccezione personalizzata. Sul lato client, in ogni chiamata asincrona si effettua un controllo per questa situazione nota e si risponde ad essa. È possibile creare una classe astratta per AsyncCallback che si sottoclasse per ogni chiamata RPC GWT:

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

È possibile utilizzare gwteventservice per generare un evento dal server al client.

Problemi correlati