2012-03-01 163 views
1

我有一個GWT應用程序,我移植到GWT 2.4。在這條線現在我木屐棄用警告:GWT棄用:PlaceHistoryHandler.register?

historyHandler.register(placeController, eventBus, defaultPlace); 

「從類型PlaceHistoryHandler的方法寄存器(PlaceController,EventBus,廣場),不推薦使用」

有沒有更好的辦法在這裏實現同樣的結果或忽視警告是否安全?

public void onModuleLoad() 
    { 
      // Create ClientFactory using deferred binding so we can replace with 
      // different impls in gwt.xml 
      ClientFactory clientFactory = GWT.create(ClientFactory.class); 
      EventBus eventBus = clientFactory.getEventBus(); 
      PlaceController placeController = clientFactory.getPlaceController(); 

      // Start ActivityManager for the main widget with our ActivityMapper 
      ActivityMapper activityMapper = new AppActivityMapper(clientFactory); 
      ActivityManager activityManager = new ActivityManager(activityMapper, eventBus); 
      activityManager.setDisplay(appWidget); 

      // Start PlaceHistoryHandler with our PlaceHistoryMapper 
      AppPlaceHistoryMapper historyMapper = GWT.create(AppPlaceHistoryMapper.class); 
      PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(historyMapper); 
      historyHandler.register(placeController, eventBus, defaultPlace); 
      RootPanel.get().add(appWidget); 

      // Goes to place represented on URL or default place 
      historyHandler.handleCurrentHistory(); 
    } 
    } 

回答

7

的方法已被棄用,因爲EventBus類型已經從com.google.gwt.event.sharedcom.google.web.bindery.event.shared。如the JavaDocs for PlaceHistoryHandler(其中沒有特別說明)所示,將EventBus切換爲com.google.web.bindery.event.shared.EventBus類型將解決棄用的警告。也就是說,現在,兩個EventBus類型在功能上都是相同的,並且警告是安全的,可以忽略。

+0

清晰,簡潔的答案!謝謝 - – Mike6679 2012-03-01 19:08:01

+1

我發現Activity.start方法仍然需要舊的EventBus。因此,目前您必須使用已棄用的PlaceHistoryHandler註冊表,或者必須推出自己的Activity基類。 – Deanna 2012-03-01 20:48:00

+1

@Deanna兩個不是真的原因:任何啓動的'Activity'都沒有給出你傳遞給'PlaceHistoryHandler.register'的確切的'EventBus',因爲'PlaceHistoryHandler'只涉及將歷史映射到地方。另外,雖然舊的EventBus是新的EventBus的子類,但爲活動提供的EventBus實例實際上是一個不同的實例,旨在允許在活動結束時重置所有註冊的處理程序。 – 2012-03-02 03:32:14