我正在通过地方信息管理我的项目中的历史记录。
我的工作是这样的:
在顶层实现PlaceRequestHandler(例如AppController),
注册-> eventBus.addHandler(PlaceRequestEvent.getType(),this);
实现方法“ onPlaceRequest”,在这里我进行项目导航。
我正在使用GWT演示者,项目中的每个演示者都覆盖onPlaceRequest
方法。
当从顶级“ onPlaceRequest”方法处理每个请求时,为什么需要这个?
我举一个例子:
public class AppController implements Presenter, PlaceRequestHandler
...........
public void bind()
{
eventBus.addHandler(PlaceRequestEvent.getType(), this);
...
}
public void onPlaceRequest(PlaceRequestEvent event)
{
// here is the project navigation tree
}
让我们邀请一位主持人
public class SomePresenter extends Presenter<SomePresenter.Display>
{
... here some methods are overriden and
@Override
protected void onPlaceRequest(PlaceRequest request)
{
// what should I do here?
}
}
有什么想法,我应该如何使用它?
最佳答案
您可以使PlaceRequestHandler
和PlaceHistoryHandler
附加到事件总线,而不是让所有演示者扩展PlaceController
并自己管理这些事件。他们共同管理浏览器的历史记录和您的位置。当您要求PlaceController
将goTo()移到另一个位置时,它将停止您当前的活动,并使用位置到活动(您的演示者)的映射来选择下一个开始。
要使用此技术,您需要让演示者扩展AbstractActivity
。尝试按照GWT文档GWT Development with Activities and Places中有关Google的教程进行操作。