GWT - Проблема с историей, первый токен - PullRequest
0 голосов
/ 26 ноября 2010

У меня есть такая проблема: когда я вызываю класс Content (тот, кто решает, какую страницу просматривать из-за #param), я делаю что-то вроде этого:

History.addValueChangeHandler(this);
if(!History.getToken().isEmpty()){
    changePage(History.getToken());
} else {
    History.newItem("homepage");
}

Итак, теперь, если я смотрю на панель навигации браузера, я вижу http://localhost:8084/GWT/?gwt.codesvr=127.0.0.1:9997#homepage. И это правильно. К сожалению, если я нажимаю Back в моем браузере, я вижу, что он загружает предыдущий адрес, такой как http://localhost:8084/GWT/?gwt.codesvr=127.0.0.1:9997

У меня есть своего рода "поддельная" страница в начале.

1 - Как я могу это исправить? И запустите приложение с токеном по умолчанию или удалите его из истории. Или просто вызовите метод onValueChange, когда есть пустой токен, и после решите рабочий процесс с помощью своего рода switch / if-else.

2 - Как связанный вопрос, когда я вызываю History.addValueChangeHandler(this); в классе конструктора, netbeans говорит: «Утечка в конструкторе». Что это значит?

Приветствия

Ответы [ 3 ]

3 голосов
/ 28 ноября 2010

Может быть, вы забыли добавить History.fireCurrentHistoryState(); в конец onModuleLoad() метода?

2 голосов
/ 29 ноября 2010

Вам необходимо установить токен истории и запустить событие изменения истории с текущим токеном. Вот как ты мог это сделать:

/ If the application starts with no history token, redirect to a new
// 'homepage' state.
String initToken = History.getToken();
if (initToken.length() == 0) {
  History.newItem("homepage");
}

// Add widgets etc


// Add history listener
History.addHistoryListener(yourHistoryHandler);

// Fire the initial history state.
History.fireCurrentHistoryState();
0 голосов
/ 26 ноября 2010

ИМХО, домашний URL в форме "proto: // hostname # homepage" выглядит ужасноАгрегат EntryPoint ValueChangeHandler<String>?

...