При перезагрузке страницы механизм истории mvp4g не работает

Я реализовал механизм истории для моего проекта mvp4g. Когда я просматриваю страницы, я вижу, что URL также меняется. Но при перезагрузке любой страницы, кроме домашней страницы, всегда отображается домашняя страница вместо нужной страницы?

Это моя реализация:

    @History(type = HistoryConverterType.SIMPLE)
public class CustomHistoryConverter implements HistoryConverter<AppEventBus> {

    private CustomEventBus eventBus;

    @Override
    public void convertFromToken(String historyName, String param, CustomEventBus eventBus) {
        this.eventBus = eventBus;
        eventBus.dispatch(historyName, param);
    }

    public String convertToToken(String eventName, String name) {
        return name;
    }

    public String convertToToken(String eventName) {
        return eventName;
    }

    public String convertToToken(String eventName, String name, String type) {
        return name;
    }

    public boolean isCrawlable() {
        return false;
    }
}

и код, связанный с шиной событий:

    @Events(startPresenter=PageOnePresenter.class,historyOnStart=true)
public interface CustomEventBus extends EventBusWithLookup {

    @Start
    @Event(handlers = PageOnePresenter.class)
    void start();

    @InitHistory
    @Event(handlers = PageOnePresenter.class)
    void init();

    @Event(handlers = PageTwoPresenter.class, name = "page2", historyConverter = CustomHistoryConverter.class)
    void getPageTwo();

    @Event(handlers = PageThreePresenter.class, name = "page3", historyConverter=CustomHistoryConverter.class)
    void getPageThree();

    @Event(handlers=PageOnePresenter.class, name = "page1", historyConverter=CustomHistoryConverter.class)
    void getPageOne();

    @Event(handlers=PageOnePresenter.class)
    void setPageTwo(HistoryPageTwoView view);

    @Event(handlers=PageOnePresenter.class)
    void setPageThree(HistoryPageThreeView view);
 }

1 ответ

HistoryConverter должен быть улучшен.

Фактически, если у события нет параметра, вы должны вернуть пустую строку. Обновите HistoryConverter, чтобы он выглядел так:

@History(type = HistoryConverterType.SIMPLE)
public class CustomHistoryConverter implements HistoryConverter<AppEventBus> {

    private CustomEventBus eventBus;

    @Override
    public void convertFromToken(String historyName, String param, CustomEventBus eventBus) {
        this.eventBus = eventBus;
        // TODO handle the param in cases where you have more than one parameter
        eventBus.dispatch(historyName, param);
    }

    public String convertToToken(String eventName, String name) {
        return name;
    }

    public String convertToToken(String eventName) {
        return "";
    }

    public String convertToToken(String eventName, String name, String type) {
        return name - "-!-" type;
    }

    public boolean isCrawlable() {
        return false;
    }
}

Надеюсь, это поможет.

Другие вопросы по тегам