GWTP如何传递PlaceManager对象来查看?

时间:2016-06-07 12:19:24

标签: gwt gwtp gwt-platform

我认为,它与服务器通信以上传和下载文件。

我已经为服务器的未授权响应添加了EventHandler到我的视图。

现在我想将用户重定向到登录页面:

PlaceManager pm;
PlaceRequest placeRequest = new PlaceRequest.Builder(pm.getCurrentPlaceRequest()).nameToken(Routing.Url.login).build();
pm.revealPlace(placeRequest);
MaterialToast.fireToast("You session has expired.");

但为此,我需要PlaceManager个对象。我怎样才能将它注入我的视野?

我使用GWT 2.7和GWTP

1 个答案:

答案 0 :(得分:1)

首先,你不应该在视图中拥有任何这样的逻辑。相反,你应该创建

public interface YourViewUiHandlers extends UiHandlers{ 
    void navigate();
}

然后更改MyView界面以实现HasUiHandlers<YourViewUiHandlers>,并在ViewImpl中将extends ViewImpl替换为e xtends ViewWithUiHandlers<YourViewUiHandlers >

现在,在您看来,您可以这样打电话给您的演示者:

getUiHandlers().navigate();

当然你的主持人应该

  1. 实施YourViewUiHandlers
  2. 在它的构造函数中执行view.setUiHandlers(this);
  3. 之类的操作

    可以使用@Inject注释将PlaceManager注入到Presenter中。 实际上,如果你想让它变得糟糕而且很脏@Inject也会为视图做这件事。如果它不是View而只是一些复合 - 使用@UiField(提供= true)用GIN初始化它,然后只需将它注入构造函数/在initWidget();之前设置字段