GWT平台把关人和嵌套演示者

GWT平台把关人和嵌套演示者,gwt,gwt-platform,Gwt,Gwt Platform,我想知道一些关于gwtp守门员的事情: 如果canReveal()方法返回false,会发生什么?在我的测试中,我被重定向到defaultplace,我可以更改它吗 具有嵌套的演示者,如: MenuPresenter-仅对管理员可见 HomePresenter-对管理员和普通用户可见 当登录用户是普通用户时,我只想“不显示”菜单演示者,这可能吗 谢谢1-“如果canReveal()方法返回false,会发生什么?在我的测试中,我被重定向到defaultplace,我可以更改它吗?” 从: 演示者

我想知道一些关于gwtp守门员的事情:

  • 如果
    canReveal()
    方法返回
    false
    ,会发生什么?在我的测试中,我被重定向到defaultplace,我可以更改它吗

  • 具有嵌套的演示者,如:

    MenuPresenter
    -仅对管理员可见

    HomePresenter
    -对管理员和普通用户可见

    当登录用户是普通用户时,我只想“不显示”菜单演示者,这可能吗

  • 谢谢

    1-“如果canReveal()方法返回false,会发生什么?在我的测试中,我被重定向到defaultplace,我可以更改它吗?”

    从:

    演示者处理错误是由自定义PlaceManager的
    revealErrorPlace
    方法显示的错误。如果不重写该方法,则是由
    revealDefaultPlace
    方法显示的错误

    这是
    revealerorplace
    的默认实现:

    public void revealErrorPlace(String invalidHistoryToken) {
        revealDefaultPlace();
    }
    
    因此,您可以在自定义PlaceManager中重写它,并向其添加更多逻辑以重定向到您想要的任何位置


    2-“当登录用户是普通用户时,我只想“不显示” 菜单演示者,可能吗?”

    可以在演示者中隐藏视图,如下所示:

    @Override
    protected void onReset() {
        super.onReset();
    
        if (!user.getAdmin) {
            getView().asWidget().setVisible(false);
       }
    }
    

    (对于PoupPresenter,您必须重写onReveal()方法)

    嗯,我认为我们应该更新文档

    您还可以覆盖revealUnauthorizedPlace,这将确保您拥有用于错误处理和安全性的disctinc进程


    默认情况下,revealUnauthorizedPlace调用RevealErrorPlace。

    hmm,我这样问是因为我看到一个示例有两个网关守卫,一个用于管理员,一个用于普通用户……是的,您可以有任意数量的网关守卫,一个用于管理员,一个用于登录用户,等等。但我恐怕不明白您的意思。