Проблема была с использованием History.newItem ().проблема возникала, когда я использовал URL с закладкой и вызывал History.newItem () с новым токеном.Поскольку токен уже присутствовал для той же внутренней страницы, и я давал ему новый токен, поэтому возникла некоторая путаница, и onValueChange () не вызывался.
Теперь я ясно, что History.newItem () должен бытьиспользуется, когда токен не присоединен к текущему представлению, чтобы пометить представление токеном.Обычно, когда пользователь открывает сайт нормально (без токена), мы должны использовать history.newItem, чтобы отметить 1-е представление.
Также стоит отметить, что History.fireCurrentHistoryState () просто вызывает onValueChange с текущим токеном.И, пройдя код GWT, я обнаружил, что History.newItem () просто вызывает History.fireCurrentHistoryState ()
На самом деле, если я заменю
if(!startToken.isEmpty())
History.newItem(startToken);
History.fireCurrentHistoryState();
в моем коде на
if(startToken.isEmpty())
History.newItem("login");
else
History.fireCurrentHistoryState();
, а также код
if(hasTypedSomeToken) {
//History.back(); //send him to the URL(token) he bookmarked b4 loggin in
History.newItem("login",false);
History.back();
System.out.println(History.getToken());
}
с
if(hasTypedSomeToken) {
History.fireCurrentHistoryState();
System.out.println("getToken() in Login = "+History.getToken());
}
работает довольно хорошо.