2016-06-07 65 views
0

我有查看,即與服務器通信上傳和下載文件。GWTP如何傳遞PlaceManager對象來查看?

我已經添加EventHandler從服務器到我的視圖的未經授權的響應。現在

我想重定向用戶到登錄頁面:

PlaceManager pm; 
PlaceRequest placeRequest = new PlaceRequest.Builder(pm.getCurrentPlaceRequest()).nameToken(Routing.Url.login).build(); 
pm.revealPlace(placeRequest); 
MaterialToast.fireToast("You session has expired."); 

,但爲了這個,我需要PlaceManager對象。我如何將它注入我的觀點?

我使用GWT 2.7和GWTP

+1

您的演示者應該與您的服務器和您的視圖與主持人。 –

回答

1

首先你不應該有任何視圖這個邏輯的。相反,你應該創建

public interface YourViewUiHandlers extends UiHandlers{ 
    void navigate(); 
} 

然後換MyView的接口來實現HasUiHandlers<YourViewUiHandlers>並在ViewImpl隨e xtends ViewWithUiHandlers<YourViewUiHandlers >

取代extends ViewImpl現在,在你看來,你就可以打電話給你的演講是這樣的:

getUiHandlers().navigate(); 

當然你發言人應該

  1. 個實施YourViewUiHandlers
  2. 在它的構造器做類似view.setUiHandlers(this);

PlaceManager可以只注入演示與@Inject註解。 其實如果你想讓它變得糟糕和骯髒@Inject也會做到這一點的觀點。如果它不是查看,但只是一些複合 - 使用@UiField(提供= true)用GIN初始化它,然後簡單地在構造函數中注入/設置字段initWidget();