В моем приложении GWT есть кнопка «Назад», к которой я прикрепил обработчик событий, который вызывает History.back ().
eventBus.addHandler(PrevEvent.TYPE, new PrevEventHandler() {
public void onNext(PrevEvent prevEvent) {
History.back();
System.out.println("Token is" +History.getToken());
}
});
Когда событие запускается, я вижу, что токен URL изменяется в браузере, но History.getToken () сам печатает последний токен. Например, если токены были добавлены в порядке #A, #B, #C, когда я нажимаю предыдущий, когда я нахожусь в #C, URL-адрес изменяется на < strong> #B, но getToken сообщает свой #C. Я думаю, это вызывает проблему отсутствия вызова метода onValueChange, и, следовательно, мое приложение остается то же.
То же самое наблюдается, когда я пытаюсь использовать кнопку «Назад» в браузере. Я использую firefox, но поведение в других браузерах ничем не отличается.
В чем может быть причина?
Я считал, что History.back () также вызовет onValueChange (), теперь кажется, что только History.newItem () будет работать тогда можно будет делать эту работу. Поправьте меня, если я ошибаюсь. Я смущен. Как тогда обрабатывать предыдущие события кнопки?
eventBus.addHandler(PrevEvent.TYPE, new PrevEventHandler() {
public void onNext(PrevEvent prevEvent) {
History.back();
System.out.println("Token is" +History.getToken());
doPrev();
}
});
private void doPrev(){
System.out.println("Calling Previous Method");
}
Где-то в моем приложении мой код с токеном текущей истории # Step3 запускает предыдущее событие. Итак, когда дело доходит до предыдущего события, я выполняю History.back () и ожидаю, что токен вернется на # Step2, и у меня есть такой метод onValueChange,
public void onValueChange(ValueChangeEvent<String> event) {
String token = event.getValue();
if(token != null){
presenter = null;
if(token == "step1")
{
System.out.println("Step 1");
//do Something
}
else if(token == "step2")
{
System.out.println("Step 2");
//do Something
}
else if(token == "step3")
{
System.out.println("Step 3");
//do Something
}