Как предотвратить выполнение кода после запуска токена истории в gwt?
Я работаю над приложением gwt2.3 с каркасом gwtp. В этом приложении у меня есть одна страница входа (индекс), которая привязывается клиентским модулем.
bindConstant().annotatedWith(DefaultPlace.class).to(NameTokens.login);
Теперь после успешного входа в систему запускается новое имя пользователя.
History.newItem(NameTokens.userconsole,true);
Теперь у меня есть обработчик истории, как показано ниже:
открытый класс NameTokenHandler реализует ValueChangeHandler {
@Override
public void onValueChange(final ValueChangeEvent<String> event) {
System.out.println("Nothing to do");
}
}
И я добавил в историю, как показано ниже в классе точки входа:
History.addValueChangeHandler(new NameTokenHandler());
Теперь, когда я переопределил метод onValueChange, я оставил его пустым.
Поэтому, когда приложение загружается первым или запускается любой другой токен имени, оно должно сначала вызвать onValueChange, и, поскольку в этом методе нет кода, ничего не нужно загружать.
Но в приложении все работает нормально. Все токены имен запускаются успешно даже после того, как в onValueChange нет кода. Я не понимаю, как предотвратить жетон истории?
Пожалуйста, помогите мне.
Заранее спасибо.
2 ответа
После небольшого поиска я узнал о месте менеджера. Я добавляю_ обработчик изменений в историю. Все обработчики изменений, которые были добавлены, все еще там. В частности, в конструкторе GWTP PlaceManagerImpl.
Если вы действительно хотите предотвратить обработку некоторых событий истории с помощью GWTP, я бы предложил, чтобы в вашем пользовательском PlaceManager вы переопределяли onValueChange(...), перехватывали токены, которые хотите заблокировать, и вызывали родительский onValueChange для токенов. вы хотите, чтобы GWTP работал нормально.
Поэтому, когда приложение загружается первым или запускается любой другой токен имени, оно должно сначала вызвать onValueChange, и, поскольку в этом методе нет кода, ничего не нужно загружать.
Если вы используете gwtp History, ValueChangeHandler не будет препятствовать или включать навигацию к определенной части вашего приложения. Это все обрабатывается с помощью PlaceManager.