2013-04-30 21 views
8

Uso di Google Web Toolkit, vorrei codificare l'equivalente di un hard refresh (control + F5).aggiornamento forzato in GWT

Non credo (o so) se GWT's Window.Location funzionerà.

import com.google.gwt.user.client.Window.Location; 

Window.Location = currentPage; // I don't think it'll be hard refresh 
+0

posso chiedere perché avete bisogno di aggiornamento forzato? Hai risorse esterne o tutto è gestito da GWT? Perché nell'ultimo caso, non vedo perché tu voglia forzare la ricarica. –

+0

@AndreaBoscolo, dove sto considerando di aggiungere questo refresh difficile, il mio codice re-indirizza gli utenti a una pagina di errore generico. Tuttavia, anziché reindirizzarli a una pagina di errore generica, desidero reindirizzarli per accedere di nuovo (cosa che il duro aggiornamento otterrà). Le credenziali di un utente scadono dopo circa 15 minuti. Non so come affrontare il problema sottostante, quindi aggiungere un aggiornamento duro è meglio che costringere l'utente ad aprire un nuovo browser e accedere di nuovo. –

risposta

9

Per ricaricare la pagina corrente è necessario chiamare Window.Location.reload() metodo.

Ricarica la finestra corrente del browser. Tutto lo stato GWT andrà perso.

Oppure si può anche specificare il proprio JSNI (di seguito come fare), perché per impostazione predefinita force reload is false:

public static native void forceReload() /*-{ 
     $wnd.location.reload(true); 
    }-*/; 
+0

Quindi Window.Location.reload() di 'GWT' non imporrà il ricaricamento? Ma il codice JSNI lo sarà se viene usato il parametro 'true'? –

+0

Se si considera l'implementazione del metodo Window.Location.reload(), non usa 'true' come parametro. per impostazione predefinita è falso. Sì, Javascript nativo lo fa. È possibile aggiungere questo metodo statico alla classe Utility se si dispone di tale. –

+0

Per quanto riguarda la risposta, la risposta non dovrebbe includere solo il codice JSNI? Se 'Window.Location.reload()' non esegue un aggiornamento, potresti modificare la risposta? –

4

Secondo https://developer.mozilla.org/en-US/docs/DOM/window.location#Methods si avrebbe bisogno di chiamare window.location.reload(true) per forzare il ricaricamento della pagina corrente.

Sfortunatamente GWT racchiude solo il window.location.reload() tramite Window.Location.reload(), ed è compito del browser recuperare la pagina dalla cache o da un altro get. Questo è fatto per ottenere la soluzione più cross-browser.

mai provato, ma si dovrebbe essere in grado di utilizzare il seguente.

public static native void reload(boolean force) /*-{ 
    $wnd.location.reload(force); 
}-*/; 
1

Per ricaricare la pagina GWT, si hanno due opzioni:

1) window.location.reload();

Ricarica la finestra corrente del browser. Tutto lo stato GWT andrà perso.

2) Window.Location.replace ("newurl");

Sostituisce l'URL corrente con uno nuovo. Tutto lo stato GWT andrà perso. Nella cronologia del browser, l'URL corrente verrà sostituito dal nuovo URL.