2013-04-30 2 views
8

Mit Google Web Toolkit möchte ich das Äquivalent von hard refresh (control + F5) kodieren.Hard Refresh in GWT

Ich glaube nicht (oder wissen), wenn GWT Window.Location funktioniert.

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

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

Kann ich dich fragen, warum musst du hart auffrischen? Haben Sie externe Ressourcen oder wird alles von GWT gehandhabt? Denn im letzten Fall sehe ich nicht, warum du das Nachladen erzwingen willst. –

+0

@AndreaBoscolo, wo ich überlege, diese Hard Refresh hinzuzufügen, leitet mein Code die Benutzer auf eine generische Fehlerseite um. Anstatt sie jedoch auf eine generische Fehlerseite umzuleiten, möchte ich sie erneut anweisen, sich erneut anzumelden (was durch die Hard Refresh erreicht wird). Die Anmeldeinformationen eines Benutzers verfallen nach etwa 15 Minuten. Ich weiß nicht, wie ich das zugrunde liegende Problem angehen soll, daher ist das Hinzufügen einer harten Aktualisierung besser, als den Benutzer dazu zu zwingen, einen neuen Browser zu öffnen und sich erneut anzumelden. –

Antwort

9

Zum erneuten Laden der aktuellen Seite müssen Sie Window.Location.reload() Methode aufrufen.

Lädt das aktuelle Browserfenster neu. Der gesamte GWT-Status wird verloren gehen.

Oder Sie können sogar Ihre eigenen JSNI angeben (siehe unten wie todo), da standardmäßig force reload is false:

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

Also 'GWT''s Window.Location.reload() wird nicht erzwingen neu laden? Aber der JSNI-Code wird, wenn der 'true' Parameter verwendet wird? –

+0

Wenn Sie die Implementierung der Window.Location.reload() -Methode betrachten, wird 'true' nicht als Parameter verwendet. Standardmäßig ist es falsch. Ja, natives Javascript tut es. Sie können diese statische Methode zu Ihrer Utility-Klasse hinzufügen, wenn Sie solche haben. –

+0

In Bezug, sollte Ihre Antwort dann nicht nur den JSNI-Code enthalten? Wenn 'Window.Location.reload()' keine harte Aktualisierung durchführt, können Sie Ihre Antwort bitte bearbeiten? –

4

https://developer.mozilla.org/en-US/docs/DOM/window.location#Methods Nach müssten Sie window.location.reload(true) rufen die Neuladen der aktuellen Seite zu erzwingen.

Leider Wrapt GWT nur die window.location.reload() über Window.Location.reload(), und es ist an dem Browser, die Seite aus dem Cache oder von einem anderen abrufen. Dies geschieht, um die browserübergreifende Lösung zu erreichen.

Nie versucht, aber Sie sollten in der Lage sein, Folgendes zu verwenden.

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

Für Reload gwt Seite, haben Sie zwei Möglichkeiten:

1) window.location.reload();

Lädt das aktuelle Browserfenster neu. Der gesamte GWT-Status wird verloren gehen.

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

Ersetzt die aktuelle URL durch eine neue URL. Der gesamte GWT-Status wird verloren gehen. Im Browserverlauf wird die aktuelle URL durch die neue URL ersetzt.