【问题标题】:Why do I need to overide "onPlaceRequest" in every Presenter class?为什么我需要在每个 Presenter 类中覆盖“onPlaceRequest”?
【发布时间】:2011-07-06 14:01:13
【问题描述】:

我正在通过 Places 管理项目中的历史记录。

我要做的是:

  • 在顶层实现 PlaceRequestHandler(例如 AppController),
  • 注册它-> eventBus.addHandler(PlaceRequestEvent.getType(), this);
  • 实现方法“onPlaceRequest”,我在其中进行项目导航。

我正在使用 GWT Presenter,我项目中的每个 Presenter 都会覆盖 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? 
}
}

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

【问题讨论】:

  • 在我输入世界级答案时,您删除了 stackoverflow.com/questions/7229931/… 太糟糕了。至少,归结为您正在阅读世界上最糟糕的 Java EE 教程。将roseindia.net 加入您的互联网黑名单!
  • 嗨 BalusC,对此感到抱歉。我不知道,我认为这个问题对任何人都不感兴趣。你对 roseindia.net 的看法是对的......
  • 没人感兴趣吗?您是否期望在几分钟内得到答案?来吧。

标签: java gwt history gwt-history


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    相关资源
    最近更新 更多