2013-04-30 4 views
8

Google Web Toolkitを使用して、hard refresh (control + F5)に相当するコードを作成したいと思います。GWTのハードリフレッシュ

GWTのWindow.Locationが動作するかどうかはわかりません。

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

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

ハードリフレッシュする必要があるのはなぜですか?外部リソースを持っているか、GWTによってすべてが処理されていますか?最後のケースでは、なぜリロードを強制したいのかわかりません。 –

+0

@AndreaBoscoloでは、このハードリフレッシュを追加することを検討しています。私のコードは、ユーザーを一般的なエラーページにリダイレクトします。しかし、それらを一般的なエラーページにリダイレクトするのではなく、それらを再指示して再度ログインしてください(ハードリフレッシュが達成する)。ユーザーの資格情報は15分後に失効します。根本的な問題に対処する方法がわからないので、ユーザーに強制的に新しいブラウザを開いて再度ログインさせるよりも、きれいなリフレッシュを追加する方が良いです。 –

答えて

9

現在のページをリロードするには、Window.Location.reload()メソッドを呼び出す必要があります。

現在のブラウザウィンドウをリロードします。すべてのGWT状態は失われます。

またはデフォルトforce reload is falseでいるのであなたも、(どのようにTODOの下)独自のJSNIを指定することができます。

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

だから 'GWT'のWindow.Location.reload()は強制的にリロードしませんか?しかし、JSNIコードは 'true'パラメータが使用されるかどうかを決定します。 –

+0

Window.Location.reload()メソッドの実装を見ると、パラメータとして 'true'は使用されません。デフォルトではfalseです。はいネイティブJavascriptが行います。ユーティリティクラスがある場合は、この静的メソッドをUtilityクラスに追加できます。 –

+0

あなたの答えはJSNIコードだけを含むべきではないのですか? 'Window.Location.reload()'がハードリフレッシュをしない場合は、あなたの答えを編集できますか? –

4

https://developer.mozilla.org/en-US/docs/DOM/window.location#Methodsによると、あなたは、現在のページのリロードを強制するwindow.location.reload(true)を呼び出す必要があります。

残念ながら、GWTは、Window.Location.reload()window.location.reload()のみをラップし、キャッシュまたは別のgetからページを取得するのはブラウザによって異なります。これは、最もクロスブラウザのソリューションを実現するために行われます。

これまでに試したことはありませんが、以下を使用することができます。

リロードGWTのページについては
public static native void reload(boolean force) /*-{ 
    $wnd.location.reload(force); 
}-*/; 
1

、2つのオプションがあります。

1)Window.Location.reload();

現在のブラウザウィンドウをリロードします。すべてのGWT状態は失われます。

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

現在のURLを新しいものに置き換えます。すべてのGWT状態は失われます。ブラウザの履歴では、現在のURLが新しいURLに置き換えられます。

関連する問題