Что нужно для History.fireCurrentHistoryState () в GWT History? - PullRequest
3 голосов
/ 03 августа 2011

Здравствуйте. Я работаю над приложением по управлению историей образцов GWT. Вот мой код onModuleLoad.

public void onModuleLoad() {
    ContentPanel panel = ContentPanel.getInstance();
    if(History.getToken()!=null && History.getToken().length()==0)
    {
        History.newItem("first_page");
    }
    History.addValueChangeHandler(new HistoryHandler());
    RootPanel.get().add(panel);
    History.fireCurrentHistoryState();
}

В этом я запустил History.fireCurrentHistoryState (); уволить текущее состояние истории. Теперь в моем классе firstPanel есть кнопка Second Panel, на которой запускается токен истории second_page.

public FirstPanel() {
    VerticalPanel panel = new VerticalPanel();
    Button button2 = new Button("Second Panel");
    button2.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent event) {
            History.newItem("second_page");
        }
    });
    panel.add(button2);
    initWidget(panel);
}

Но здесь нет необходимости запускать History.fireCurrentHistoryState (); снова. просто history.newItem работает нормально.

Теперь я хочу знать, что нужно для History.fireCurrentHistoryState () только во время загрузки модуля? Также почему это не требуется второй раз в приложении .?

1 Ответ

3 голосов
/ 03 августа 2011

History.fireCurrentHistoryState() вызывает ваши обработчики истории, фактически не вставляя новый элемент истории в стек истории браузера, тогда как History.newItem(token) вставляет новый маркер истории в стек истории.

Примечание: если ваш текущий токен совпадает с новым токеном (т.е. перезагружается та же страница), браузеры не вставляют его в стек истории. В этом случае (текущий токен == новый токен) History.fireCurrentHistoryState() имеет тот же эффект, что и History.newItem(currentToken).

...