GWT 历史机制

17 Mar 2025 | 阅读 2 分钟

GWT 历史机制类似于 Ajax 历史实现,例如 RSH (Really Simple History)。 基本思想是在 URL 片段标识符中跟踪应用程序的 内部状态。 这种机制的主要优点是

  • 它提供可靠的浏览器历史记录。
  • 它为用户提供了良好的反馈。
  • 它是 可书签的,即用户可以为当前状态创建书签并保存它,或者可以通过电子邮件发送等。

GWT 历史语法


GWT 历史令牌

令牌只是一个字符串,应用程序可以对其进行解析以返回到特定状态。 此令牌将作为 URL 片段(在地址栏中,在“#”之后)保存在浏览器历史记录中,当用户在历史记录中后退或前进,或单击链接时,此片段将传递回应用程序。

示例: 历史令牌名称 javatpoint。

http://www.example.com/com.example.gwt.HistoryExample/HistoryExample.html#javatpoint

GWT 历史常用方法

修饰符和类型方法描述
static HandlerRegistrationaddValueChangeHandler (ValueChangeHandler<java.lang.String> handler)它添加一个 ValueChangeEvent 处理程序,以通知浏览器历史堆栈的更改。
static voidback()它相当于用户按下浏览器的“后退”按钮。
static java.lang.StringencodeHistoryToken(java.lang.String historyToken)它对历史令牌进行编码,以便用作 URI 的一部分。
static voidfireCurrentHistoryState()它使用当前历史状态调用 ValueChangeHandler.onValueChange (com.google.gwt.event.logical.shared.ValueChangeEvent) 事件。
static voidforward()它相当于用户按下浏览器的“前进”按钮。
static java.lang.StringgetToken()它获取当前历史令牌。
static voidnewItem(java.lang.String historyToken)它添加一个新的浏览器历史记录条目。
static voidnewItem(java.lang.String historyToken, boolean issueEvent)它添加一个新的浏览器历史记录条目。
static voidreplaceItem(java.lang.String historyToken)它替换浏览器历史堆栈顶部的当前历史令牌。
static voidreplaceItem(java.lang.String historyToken, boolean issueEvent)它替换浏览器历史堆栈顶部的当前历史令牌。

GWT 历史示例

输出

GWT History 1

GWT 超链接小部件

超链接使用起来很方便,可以将历史记录支持集成到应用程序中。 超链接小部件是 GWT 小部件,看起来像普通的 HTML 锚点。 您可以将历史令牌与超链接关联,当单击它时,历史令牌会自动添加到浏览器历史堆栈中。 History.newItem(token) 步骤是自动完成的。

处理 onValueChange() 回调

处理 ValueChangeHandler 中的 onValueChange() 回调方法的第一步是使用 ValueChangeEvent.getValue() 获取新的历史令牌,然后我们将解析该令牌。 解析令牌后,我们可以重置应用程序的状态。

当调用 onValueChange() 方法时,应用程序会处理两种情况

  1. 应用程序刚启动,并传递了一个历史令牌。
  2. 应用程序已经在运行,并传递了一个历史令牌。

下一篇主题GWT 自定义小部件