📅  最后修改于: 2021-01-02 12:57:29             🧑  作者: Mango
GWT历史记录机制类似于Ajax历史记录实现,例如RSH(真正简单的历史记录) 。基本思想是在URL片段标识符中跟踪应用程序内部状态。这种机制的主要优点是:
GWT历史记录语法
public class History extends java.lang.Object
令牌只是应用程序可以解析以返回特定状态的字符串。该令牌将作为URL片段(在位置栏中的“#”之后)保存在浏览器历史记录中,并且当用户在历史记录中来回或前进时,或通过链接时,该片段都将传递回应用程序。
示例:历史记录标记名称javatpoint。
http://www.example.com/com.example.gwt.HistoryExample/HistoryExample.html#javatpoint
Modifier and Types | Method | Description |
---|---|---|
static HandlerRegistration | addValueChangeHandler (ValueChangeHandler |
It adds a ValueChangeEvent handler to be informed of changes to the browser’s history stack. |
static void | back() | It is a programmatic equivalent to the user pressing the browser’s ‘back’ button. |
static java.lang.String | encodeHistoryToken(java.lang.String historyToken) | It encodes a history token for use as part of a URI. |
static void | fireCurrentHistoryState() | It calls a ValueChangeHandler.onValueChange (com.google.gwt.event.logical.shared.ValueChangeEvent) events with the current history state. |
static void | forward() | It is a programmatic equivalent to the user pressing the browser’s ‘forward’ button. |
static java.lang.String | getToken() | It gets the current history token. |
static void | newItem(java.lang.String historyToken) | It adds a new browser history entry. |
static void | newItem(java.lang.String historyToken, boolean issueEvent) | It adds a new browser history entry. |
static void | replaceItem(java.lang.String historyToken) | It replaces the current history token on top of the browsers history stack. |
static void | replaceItem(java.lang.String historyToken, boolean issueEvent) | It replaces the current history token on top of the browsers history stack. |
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();
}
}
输出:
使用超链接可以很方便地将历史支持合并到应用程序中。超链接小部件是看起来像常规HTML锚点的GWT小部件。您可以将历史记录令牌与超链接相关联,单击它后,历史记录令牌将自动添加到浏览器历史记录堆栈中。 History.newItem(token)步骤自动完成。
处理onValueChange()回调
在ValueChangeHandler中处理onValueChange()回调方法的第一步是使用ValueChangeEvent.getValue()获取新的历史记录令牌,然后我们将解析该令牌。一旦令牌被解析,我们就可以重置应用程序的状态。
调用onValueChange()方法时,应用程序处理两种情况: