2011-09-29 23 views
2

我想知道gwtp把關一些事情:GWT平臺網守和嵌套主持人

  1. 如果canReveal()方法返回false,會發生什麼?在我的測試中,我已被重定向到默認位置,我可以改變它?

  2. 已經嵌套的主持人,如:

    MenuPresenter - 只爲管理員可見。

    HomePresenter - 可見於管理員和普通用戶。

    當記錄的用戶是普通用戶時,我只想「不顯示」菜單演示者,這可能嗎?

感謝

回答

3

1 - 「?如果canReveal()方法返回false,會發生什麼。在我的測試中,我一直重定向到defaultplace,我可以改變它」

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

+0

嗯,我問它,因爲我看到一個例子,有2個守門員,一個用於管理員和一個用於普通用戶... – caarlos0

+0

是的,你可以有任意數量的網守,一個用於管理員,一個用於登錄用戶等等,但恐怕我看不到你的觀點。 –

+0

我編輯了我的答案,或許現在更清楚了。 –

1

嗯,我想我們應該更新的文檔。

您也可以重寫revealUnauthorizedPlace,這將確保您有錯誤處理過程和安全性。

默認情況下,revealUnauthorizedPlace調用揭示ErrorPlace。

+0

嗯,很高興知道!謝啦。 – caarlos0