GWT - History.getToken()始终返回空值

时间:2014-05-07 10:19:23

标签: java gwt browser-history

我试图在我的GWT应用程序中获取最后访问过的页面。如果有历史记录,我想跳过特定的页面。要获取上次访问过的网页,我尝试History.getToken()获取当前令牌,如文档中所述。但它始终返回空白令牌。

请帮忙。我是GWT的初级开发人员。

1 个答案:

答案 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应用程序中,执行以下步骤:

  • 如果要启用历史记录事件,请将历史记录添加到历史记录堆栈。
  • 创建一个实现ValueChangeHandler接口的对象,解析新令牌(可通过调用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上找到示例代码。