GWTP - 我是否将它正确地用于安全和不安全的区域?

GWTP - Am I using it correctly for secured and unsecured areas?

我正在尝试使用我现有的应用程序过渡到 GWTP。但是,我在弄清楚如何为其设置安全区域和不安全区域时遇到了一些麻烦。

案例很简单:我有一个登录页面和一个管理页面,它们都有完全不同的框架(菜单、侧边导航、主要内容等)。

为了简单起见,这些是我当前的模块实现:

我在 ApplicationView UiBinder 中实际拥有的是:

这是 public 静态 UI 字段 ApplicationView:

public static @UiField SimplePanel mainContentWrapper;

我现在做的是设置两个演示者 AdminToolPresenterLangingPresenteronReveal() 方法内部的实际内容,如下所示:

@Inject
AdminToolPresenter(EventBus eventBus, MyView view, MyProxy proxy) {
    super(eventBus, view, proxy, ApplicationPresenter.SLOT_AdminMainContent);
}

@Override
protected void onReveal() {
    super.onReveal();
    ApplicationView.mainContentWrapper.setWidget(this.getView());
}

@Inject
LandingPresenter(EventBus eventBus, MyView view, MyProxy proxy) {
    super(eventBus, view, proxy, ApplicationPresenter.SLOT_LandingMainContent);
}

@Override
protected void onReveal() {
    super.onReveal();
    ApplicationView.mainContentWrapper.setWidget(this.getView());
}

请注意我如何分别绑定 ApplicationPresenter.SLOT_AdminMainContentApplicationPresenter.SLOT_LandingMainContent

由于 GWTP 实际上是一个非常智能的工具,我想确保我正确地使用了它。

因此我想知道我是否按照预期的方式执行此操作,或者 GWTP 是否真的为这个问题提供了更智能的解决方案?

这个问题特别明显,因为我还不确定实际将如何处理导航。

无需在您的 onReveal 方法中调用 ApplicationView.mainContentWrapper.setWidget(this.getView())
GWTP 应该通过在 ApplicationView 构造函数中使用 bindSlot(ApplicationPresenter.SLOT_LandingMainContent, mainContentWrapper) 或覆盖 ApplicationView 中的 setInSlotaddToSlot 方法来解决这个问题。 (参见 SLOTS documentation

您还需要使用 Gatekeeper 来保护您的 AdminToolPresenter