【发布时间】:2011-09-29 17:06:42
【问题描述】:
我想知道一些关于 gwtp 网守的事情:
如果
canReveal()方法返回false,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?-
具有嵌套的演示者,例如:
MenuPresenter- 仅对管理员可见。HomePresenter- 对管理员和普通用户可见。当登录用户是普通用户时,我只想“不显示”菜单演示者,这可能吗?
谢谢
【问题讨论】:
标签: gwt gwt-platform
我想知道一些关于 gwtp 网守的事情:
如果canReveal() 方法返回false,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?
具有嵌套的演示者,例如:
MenuPresenter - 仅对管理员可见。
HomePresenter - 对管理员和普通用户可见。
当登录用户是普通用户时,我只想“不显示”菜单演示者,这可能吗?
谢谢
【问题讨论】:
标签: gwt gwt-platform
1 - “如果 canReveal() 方法返回 false,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?”
来自GWTP wiki:
“演示者处理错误是您的自定义 PlaceManager 的 revealErrorPlace 方法所揭示的错误。如果您不覆盖该方法,那么它是您的 revealDefaultPlace 方法所揭示的错误。”
这是revealErrorPlace的默认实现:
public void revealErrorPlace(String invalidHistoryToken) {
revealDefaultPlace();
}
因此,您可以在自定义 PlaceManager 中覆盖它并为其添加更多逻辑以重定向到您想要的任何位置。
2 - “当登录用户是普通用户时,我只想“不显示” 菜单演示者,这可能吗?”
您可以像这样在演示者中隐藏视图:
@Override
protected void onReset() {
super.onReset();
if (!user.getAdmin) {
getView().asWidget().setVisible(false);
}
}
(对于 PopupPresenters,您必须覆盖 onReveal() 方法)
【讨论】:
嗯,我认为我们应该更新文档。
您还可以覆盖revealUnauthorizedPlace,这将确保您有一个用于错误处理和安全性的独特流程。
默认情况下,revealUnauthorizedPlace 调用revealErrorPlace。
【讨论】: