【问题标题】:GWT-Platform Gatekeeper and Nested PresentersGWT 平台关守和嵌套演示者
【发布时间】:2011-09-29 17:06:42
【问题描述】:

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

  1. 如果canReveal() 方法返回false,会发生什么?在我的测试中,我已被重定向到默认位置,我可以更改它吗?

  2. 具有嵌套的演示者,例如:

    MenuPresenter - 仅对管理员可见。

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

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

谢谢

【问题讨论】:

    标签: gwt gwt-platform


    【解决方案1】:

    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() 方法)

    【讨论】:

    • 嗯,我问它是因为我看到一个示例有 2 个网守,一个用于管理员,一个用于普通用户...
    • 是的,你可以有任意数量的看门人,一个用于管理员,一个用于登录用户,等等。但恐怕我不明白你的意思。
    【解决方案2】:

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

    您还可以覆盖revealUnauthorizedPlace,这将确保您有一个用于错误处理和安全性的独特流程。

    默认情况下,revealUnauthorizedPlace 调用revealErrorPlace。

    【讨论】:

      猜你喜欢
      • 2013-02-23
      • 1970-01-01
      • 1970-01-01
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多