使用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
使用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
要重新加载当前页面,您需要调用Window.Location.reload()方法。
重新加载当前的浏览器窗口。所有的GWT状态都将丢失。
或者你甚至可以指定自己的JSNI(下如何待办事项),因为默认情况下force reload is false:
public static native void forceReload() /*-{
$wnd.location.reload(true);
}-*/;
所以'GWT'的Window.Location.reload()不会强制重载?但是如果使用'true'参数,那么JSNI代码将会被使用? – 2013-04-30 16:23:49
如果你看一下Window.Location.reload()方法的实现,它不会使用'true'作为参数。默认情况下它是错误的。是本地Javascript的确。如果您有此类静态方法,您可以将此静态方法添加到您的Utility类。 – 2013-04-30 16:36:09
尊重,您的答案不应该只包含JSNI代码吗?如果'Window.Location.reload()'不能进行硬刷新,请问您可以编辑您的答案吗? – 2013-04-30 16:40:49
根据https://developer.mozilla.org/en-US/docs/DOM/window.location#Methods你需要调用window.location.reload(true)
迫使当前页面的重新加载。
不幸的是,GWT只通过Window.Location.reload()
来包装window.location.reload()
,由浏览器来从缓存或其他get中取回页面。这是为了实现最多的跨浏览器解决方案。
从未尝试,但你应该能够使用以下内容。
public static native void reload(boolean force) /*-{
$wnd.location.reload(force);
}-*/;
对于重载GWT页面,你有两个选择:
1)Window.Location.reload();
重新加载当前的浏览器窗口。所有的GWT状态都将丢失。
2)Window.Location.replace(“newurl”);
用新的替换当前的URL。所有的GWT状态都将丢失。在浏览器的历史记录中,当前的URL将被新的URL替换。
我可以问你为什么需要硬刷新?你有外部资源,还是一切都由GWT处理?因为在最后一种情况下,我不明白你为什么要强制重新加载。 – 2013-04-30 17:10:47
@AndreaBoscolo,我正在考虑添加这个硬刷新,我的代码将用户重定向到一个通用的错误页面。但是,我不想将它们重定向到通用错误页面,而是希望重新指引它们再次登录(硬刷新将实现)。用户的凭证在15分钟左右后过期。我不知道如何解决底层问题,因此添加硬刷新比强制用户打开新浏览器并重新登录更好。 – 2013-04-30 17:43:34