我想知道一些关于 gwtp 网守的事情:
如果
canReveal()
方法返回false
,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?具有嵌套的演示者,例如:
MenuPresenter
- 仅对管理员可见。HomePresenter
- 对管理员和普通用户可见。当登录的用户是普通用户时,我只想“不显示”菜单演示者,这可能吗?
谢谢
我想知道一些关于 gwtp 网守的事情:
如果canReveal()
方法返回false
,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?
具有嵌套的演示者,例如:
MenuPresenter
- 仅对管理员可见。
HomePresenter
- 对管理员和普通用户可见。
当登录的用户是普通用户时,我只想“不显示”菜单演示者,这可能吗?
谢谢
1 - “如果 canReveal() 方法返回 false,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?”
来自GWTP 维基:
“演示者处理错误是您的自定义 PlaceManagerrevealErrorPlace
方法所揭示的错误。如果您不覆盖该方法,那么它就是您的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。