林在我的GWT應用程序中使用GWTP並具有以下結構:GWTP:在註銷清楚主持人
LoginPresenter (Presenter)
DashboardPresenter (TabContainerPresenter)
TabbedPresenter1 (Presenter)
TabbedPresenter2 (Presenter)
TabbedPresenter3 (Presenter)
我第一次開始我的應用程序中,onBind和addTab方法被稱爲在DashboardPresenter,當我導航到選項卡,在該演示者上調用onbind方法。
如果我通過我的PlaceManager創建PlaceRequest並導航回LoginPresenter(通過按下注銷按鈕),我將返回到登錄演示者。
問題是如果我再次登錄,那麼所有的onBind方法都不會被調用,因爲它們仍然在內存中。 onReset和onReveal被正確調用,但我非常希望每個Presenter都被重置,並且每次登錄時都會調用onBind。
我決定登錄事件哪些選項卡應該對用戶可見,並限制DashboardPresenter的addTab方法中的選項卡(如果用戶沒有足夠的權限來查看這些選項卡)。但截至目前,這些標籤是在用戶第一次登錄時設置的,但不是下一次。這意味着如果權限較小的用戶在管理員用戶後登錄,他可以看到與管理員相同的選項卡。不好!
我該如何處理?當用戶註銷(導航到登錄頁面)時,我非常希望「重置」所有演示者或會話。是否Ginjector需要「重置」,以便它不會像以前那樣返回相同的綁定對象?
只是爲了澄清:我們確實有服務器端安全性,禁止用戶無權訪問敏感數據。但是,當用戶登錄時,gwt應用程序會收到用戶可以訪問的功能列表。這用於自定義用戶界面以適應用戶的權限。 (例如基於用戶特權定製可見標籤)。
我應該補充說我目前沒有在演示者上使用解除綁定的方法,因爲我不知道當這些方法被調用時會發生什麼。 –
目前,我的解決方案是使用Window.Location.reload()完成一個完整的頁面重新加載。我不是很喜歡這個,但它有訣竅。仍然需要一個很好的解決方案,在註銷事件中「重置」我的web應用程序...... –
僅供參考'onUnBind()'方法應該手動調用,因此它們不適用於您的情況(參見http:// stackoverflow .COM /問題/ 13396992/gwtp-onunbind,從來沒有所謂的-後收盤-A-主持人/ 13397858#13397858)。 –