我试图在我的GWT应用程序中获取最后访问过的页面。如果有历史记录,我想跳过特定的页面。要获取上次访问过的网页,我尝试History.getToken()
获取当前令牌,如文档中所述。但它始终返回空白令牌。
请帮忙。我是GWT的初级开发人员。
答案 0 :(得分:1)
请查看Coding Basics History - GWT Project。
例如,名为page1
的历史记录标记将添加到URL中,如下所示:
http://www.example.com/com.example.gwt.HistoryExample/HistoryExample.html#page1
当应用程序想要将占位符推送到浏览器的历史堆栈时,它只会调用History.newItem(token)。
当用户使用后退按钮时,将调用添加为History.addValueChangeHandler()处理程序的任何对象。
由应用程序根据新令牌的值恢复状态。
请在申请表中验证以下几点。
要使用GWT历史记录支持,您必须先将iframe
嵌入主机HTML页面。
<iframe src="javascript:''"
id="__gwt_historyFrame"
style="position:absolute;width:0;height:0;border:0"></iframe>
然后,在您的GWT应用程序中,执行以下步骤:
ValueChangeEvent.getValue()
获得)并更改应用程序状态以匹配。 问题: GWT - History.getToken()
总是返回空白值?
请再次检查网址,并确认您已将新的历史记录标记添加到历史记录堆栈中,最重要的是在您的主页中包含历史记录框架。
查看源代码,了解为什么会出现空白值?
// History.class
public class History {
private static HistoryImpl impl;
static {
impl = GWT.create(HistoryImpl.class);
if (!impl.init()) {
// Set impl to null as a flag to no-op future calls.
impl = null;
// Tell the user.
GWT.log("Unable to initialize the history subsystem; did you "
+ "include the history frame in your host page? Try "
+ "<iframe src=\"javascript:''\" id='__gwt_historyFrame' "
+ "style='position:absolute;width:0;height:0;border:0'>"
+ "</iframe>");
}
}
public static String getToken() {
// impl is null if you have not included the history frame in your host page
// if impl is null then it return blank value
return impl != null ? HistoryImpl.getToken() : "";
}
}
在History Management in GWT上找到示例代码。