为什么我需要在每个Presenter类中覆盖“onPlaceRequest”?

时间:2011-07-06 14:01:13

标签: java gwt history gwt-history

我通过地方管理我项目中的历史。

我的工作是:

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

这个想法是什么,以及我应该如何使用它?

1 个答案:

答案 0 :(得分:2)

您可以将PlaceRequestHandlerPlaceHistoryHandler附加到活动总线,而不是让所有演示者都展开PlaceController并自行管理这些活动。他们一起管理浏览器的历史记录和您的位置。当您要求PlaceController转到(不同的地方)时,它会停止您当前的活动,并使用地点与活动(您的演示者)的映射来选择下一个开始的活动。

要使用此技术,您需要让演示者扩展AbstractActivity。请在GWT的名为GWT Development with Activities and Places的文档中仔细阅读有关它的Google教程。