2013-04-30 3 views
8

En utilisant Google Web Toolkit, je voudrais coder l'équivalent d'un hard refresh (control + F5).Actualisation matérielle dans GWT

Je ne crois pas (ou je sais) si Window.Location de GWT fonctionnera.

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

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

Puis-je vous demander pourquoi avez-vous besoin de rafraichir? Avez-vous des ressources externes, ou tout est géré par GWT? Parce que dans le dernier cas, je ne vois pas pourquoi vous voulez forcer le rechargement. –

+0

@AndreaBoscolo, où je pense à ajouter ce rafraîchissement, mon code redirige les utilisateurs vers une page d'erreur générique. Cependant, plutôt que de les rediriger vers une page d'erreur générique, je veux les rediriger vers une nouvelle connexion (ce que l'actualisation matérielle permettra d'obtenir). Les informations d'identification d'un utilisateur expirent après 15 minutes environ. Je ne sais pas comment résoudre le problème sous-jacent, il est donc préférable d'ajouter un rafraîchissement dur que de forcer l'utilisateur à ouvrir un nouveau navigateur et à se reconnecter. –

Répondre

9

Pour recharger la page en cours vous devez appeler la méthode Window.Location.reload().

Recharge la fenêtre actuelle du navigateur. Tout l'état GWT sera perdu.

Ou vous pouvez même spécifier votre propre JSNI (ci-dessous comment todo), car par défaut force reload is false:

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

Donc Window.Location.reload() 'GWT' ne va pas forcer le rechargement? Mais le code JSNI va-t-il si le paramètre 'true' est utilisé? –

+0

Si vous regardez l'implémentation de la méthode Window.Location.reload(), elle n'utilise pas 'true' en tant que paramètre. Par défaut, il est faux. Oui Natif Javascript fait. Vous pouvez ajouter cette méthode statique à votre classe Utility si vous en avez. –

+0

En toute déférence, votre réponse ne devrait-elle pas inclure le code JSNI alors? Si 'Window.Location.reload()' ne fait pas un rafraîchissement, pourriez-vous éditer votre réponse? –

4

Selon https://developer.mozilla.org/en-US/docs/DOM/window.location#Methods vous devez appeler window.location.reload(true) pour forcer le rechargement de la page en cours.

Malheureusement, GWT n'emballe que le window.location.reload() via Window.Location.reload(), et il appartient au navigateur de récupérer la page du cache ou d'un autre get. Ceci est fait pour atteindre la solution la plus cross-navigateur.

Vous n'avez jamais essayé mais vous devriez pouvoir utiliser ce qui suit.

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

Pour la page reload GWT, vous avez deux options:

1) window.location.reload();

Recharge la fenêtre actuelle du navigateur. Tout l'état GWT sera perdu.

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

Remplace l'URL actuelle par une nouvelle. Tout l'état GWT sera perdu. Dans l'historique du navigateur, l'URL actuelle sera remplacée par la nouvelle URL.

Questions connexes