我正在通过地方信息管理我的项目中的历史记录。

我的工作是这样的:


在顶层实现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?
}
}


有什么想法,我应该如何使用它?

最佳答案

您可以使PlaceRequestHandlerPlaceHistoryHandler附加到事件总线,而不是让所有演示者扩展PlaceController并自己管理这些事件。他们共同管理浏览器的历史记录和您的位置。当您要求PlaceController将goTo()移到另一个位置时,它将停止您当前的活动,并使用位置到活动(您的演示者)的映射来选择下一个开始。

要使用此技术,您需要让演示者扩展AbstractActivity。尝试按照GWT文档GWT Development with Activities and Places中有关Google的教程进行操作。

09-05 12:45