我想知道一些关于gwtp gatekeeper的事情:
-
如果
canReveal()
方法返回false
,会发生什么?在我的测试中,我被重定向到默认位置,我可以改变它吗? -
嵌套演示器,如:
MenuPresenter
-仅对管理员可见。HomePresenter
-对管理员和普通用户可见。当登录用户是普通用户时,我只想"不显示"菜单显示者,这是可能的吗?
谢谢
1 - "如果canReveal()方法返回false,会发生什么?在我的测试中,我被重定向到默认位置,我可以改变它吗?"
来自GWTP wiki:
"演示者处理错误是由您的自定义PlaceManager的revealErrorPlace
方法显示的。如果您不重写该方法,那么它就是您的revealDefaultPlace
方法所显示的方法。"
revealErrorPlace
的默认实现:
public void revealErrorPlace(String invalidHistoryToken) {
revealDefaultPlace();
}
所以你可以在你的自定义PlaceManager中重写它,并添加更多的逻辑来重定向到你想要的任何地方。
2 - "当登录用户是普通用户时,我只想显示"not display"菜单展示员,可以吗?"
你可以像这样隐藏演示器中的视图:
@Override
protected void onReset() {
super.onReset();
if (!user.getAdmin) {
getView().asWidget().setVisible(false);
}
}
(对于popuppresentors,你必须重写onReveal()方法)
嗯,我想我们应该更新文档。
您还可以覆盖revealUnauthorizedPlace,这将确保您有一个用于错误处理和安全性的不同进程。
默认情况下,revealUnauthorizedPlace调用revealserorplace。