我正在尝试使用已有的应用程序转换到GWTP。但是,我遇到了一些麻烦,想知道如何为它设置一个安全区域和一个不安全的区域。
案例很简单:我的目标网页和管理页面都有完全不同的骨架(菜单,侧面导航,主要内容等)。
为了简化,这些是我当前的模块实现:
我在ApplicationView
UiBinder中实际拥有的是:
这是ApplicationView
的公共静态UI字段:
public static @UiField SimplePanel mainContentWrapper;
我现在所做的是设置两位演示者onReveal()
和AdminToolPresenter
的{{1}}方法内的实际内容,如下所示:
LangingPresenter
和
@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_AdminMainContent
。
由于GWTP实际上是一个非常聪明的工具,我想确保我正确使用它。
因此,我想知道我是否按预期方式执行此操作,或者GWTP是否真的为此问题提供了更智能的解决方案?
这个问题尤其突出,因为我不确定导航是如何实际处理的。
答案 0 :(得分:0)
您无需在ApplicationView.mainContentWrapper.setWidget(this.getView())
方法中拨打onReveal
GWTP
应该通过bindSlot(ApplicationPresenter.SLOT_LandingMainContent, mainContentWrapper)
构建器中的ApplicationView
或覆盖setInSlot
中的addToSlot
或ApplicationView
方法来处理此问题。 (见SLOTS documentation)
您还需要使用Gatekeeper来保护AdminToolPresenter
。