我正在尝试使用GWT应用程序实现历史机制但是页面书签有问题,即在我的情况下,我创建了3个页面,其中一个从另一个调用。现在,问题是如果page3被加入书签,那么在调用该书签时它应该打开page3而不是现在它打开主页。 为什么会如此。?可能是什么问题。?
我已将HistoryConverter实现为,
@History(type=HistoryConverterType.SIMPLE)
public class MyHistoryConverter implements HistoryConverter<HistoryManagerEventBus> {
public MyHistoryConverter() {
}
@Override
public void convertFromToken(String historyName, String param,HistoryManagerEventBus eventBus) {
eventBus.dispatch(historyName);
}
public String convertToToken(String eventType){
return eventType;
}
public String convertToToken(String eventType,HistoryPageTwoView view){
return view.getClass().getName();
}
public String convertToToken(String eventType,HistoryPageThreeView view){
return view.getClass().getName();
}
@Override
public boolean isCrawlable() {
return false;
}
}
和eventBus as,
@Events(startPresenter = HistoryPageOnePresenter.class,historyOnStart=true)
public interface HistoryManagerEventBus extends EventBusWithLookup {
/**
* Start event will be fired internally
*/
@Start
@Event(handlers = HistoryPageOnePresenter.class,historyConverter=MyHistoryConverter.class)
void start();
@InitHistory
@Event(handlers = HistoryPageOnePresenter.class)
void init();
@Event(handlers = HistoryPageTwoPresenter.class,historyConverter=MyHistoryConverter.class)
void getHistoryPageTwo();
@Event(handlers=HistoryPageThreePresenter.class,historyConverter=MyHistoryConverter.class)
void getHistoryPageThree();
@Event(handlers=HistoryPageOnePresenter.class,historyConverter=MyHistoryConverter.class)
void getHistoryPageOne();
@Event(handlers=HistoryPageOnePresenter.class)
void setHistoryPageTwo(HistoryPageTwoView view);
@Event(handlers=HistoryPageOnePresenter.class)
void setHistoryPageThree(HistoryPageThreeView view);
}
答案 0 :(得分:0)
假设:
@Event(handlers = HistoryPageTwoPresenter.class,historyConverter=MyHistoryConverter.class)
void getHistoryPageTwo();
@Event(handlers=HistoryPageThreePresenter.class,historyConverter=MyHistoryConverter.class)
void getHistoryPageThree();
@Event(handlers=HistoryPageOnePresenter.class,historyConverter=MyHistoryConverter.class)
void getHistoryPageOne();
是您的导航事件,不需要在MyHistoryConverter类中定义以下方法:
public String convertToToken(String eventType,HistoryPageTwoView view){
return view.getClass().getName();
}
public String convertToToken(String eventType,HistoryPageThreeView view){
return view.getClass().getName();
}
因为他们没有被叫来创建历史令牌。
如果您的历史记录转换器有效,您应该在网址中看到类似的内容:
[myURL] #getHistoryPageOne
或
[myURL] #getHistoryPageTwo
或
[myURL] #getHistoryPageThree
如果您输入:
[myURL] #getHistoryPageThree
启动你的应用程序,令牌将在convertFromToken方法中处理。 您可以将@Debug-annotation添加到eventBus,以验证在应用程序启动时是否触发了已添加书签的事件。
所以一切看起来都不错,但事实上,Start-event不应该有historyConverter属性。