GWT历史记录机制

本文概述

  • GWT历史记录令牌
  • GWT超链接小部件
GWT历史记录机制类似于Ajax历史记录实现, 例如RSH(真正简单的历史记录)。基本思想是在URL片段标识符中跟踪应用程序内部状态。这种机制的主要优点是:
  • 它提供可靠的浏览器历史记录。
  • 它向用户提供了良好的反馈。
  • 它可以添加书签, 即用户可以创建当前状态的书签并保存或通过电子邮件发送等。
GWT历史记录语法
public class History extends java.lang.Object

GWT历史记录令牌 令牌只是应用程序可以解析以返回特定状态的字符串。该令牌将作为URL片段(在位置栏中的“#”之后)保存在浏览器历史记录中, 并且当用户在历史记录中前进或后退或跟随链接时, 此令牌将传递回应用程序。
示例:历史标记名称srcmini。
【GWT历史记录机制】http://www.example.com/com.example.gwt.HistoryExample/HistoryExample.html#srcmini
GWT历史记录的常用方法
修饰符和类型 方法 描述
静态HandlerRegistration addValueChangeHandler(ValueChangeHandler < java.lang.String> 处理程序) 它添加了ValueChangeEvent处理程序, 以通知浏览器的历史记录堆栈更改。
static void back() 它等同于用户按下浏览器的“后退”按钮的程序。
静态java.lang.String encodeHistoryToken(java.lang.String historyToken) 它对历史令牌进行编码, 以用作URI的一部分。
static void fireCurrentHistoryState() 它使用当前历史记录状态调用ValueChangeHandler.onValueChange(com.google.gwt.event.logical.shared.ValueChangeEvent)事件。
静态空隙 forward() 它等同于用户按下浏览器的“前进”按钮的程序。
静态java.lang.String getToken() 它获取当前历史记录令牌。
静态空隙 newItem(java.lang.String historyToken) 它添加了一个新的浏览器历史记录条目。
static void newItem(java.lang.String historyToken, boolean issueEvent) 它添加了一个新的浏览器历史记录条目。
静态空隙 replaceItem(java.lang.String historyToken) 它替换了浏览器历史记录堆栈顶部的当前历史记录令牌。
静态空隙 replaceItem(java.lang.String historyToken, boolean issueEvent) 它替换了浏览器历史记录堆栈顶部的当前历史记录令牌。
GWT历史记录示例
public void start(){ setLocale(); this.service=OswServiceFactory.getService(); loadPreferences(); service.setup(getPreference("bosh_path"), getPreference("bosh_host"), getPreference("xmpp_domain")); History.addValueChangeHandler(new HistoryEventHandler()); History.fireCurrentHistoryState(); if (Storage.isSupported()) { Storage localStorage=Storage.getLocalStorage(); String username=localStorage.getItem("username"); String password=localStorage.getItem("password"); if (username != null & & password != null) { login(username, password); return; } } if (!sessionActive) { showLogin(); } }

输出:
GWT历史记录机制

文章图片
GWT超链接小部件 使用超链接可以很方便地将历史记录支持集成到应用程序中。超链接小部件是看起来像常规HTML锚点的GWT小部件。你可以将历史记录令牌与超链接相关联, 单击它后, 历史记录令牌将自动添加到浏览器历史记录堆栈中。 History.newItem(token)步骤是自动完成的。
处理onValueChange()回调
在ValueChangeHandler中处理onValueChange()回调方法的第一步是使用ValueChangeEvent.getValue()获取新的历史记录令牌, 然后我们将解析该令牌。一旦令牌被解析, 我们就可以重置应用程序的状态。
调用onValueChange()方法时, 应用程序处理两种情况:
  1. 该应用程序刚刚启动, 并已传递历史记录令牌。
  2. 该应用程序已在运行, 并已传递历史记录令牌。

    推荐阅读