2012-01-20 11 views
20

W pliku gwt-user.jar znajdują się 2 interfejsy EventBus i implikacje SimpleEventBus.Z jakiego GWT EventBus powinienem korzystać?

com.google.gwt.event.shared.EventBus i com.google.web.bindery.event.shared.EventBus Będę to określać jako "gwt.event" i "web.bindery".

Patrząc na JavaDocs i kod źródłowy, widzę, że gwt.event po prostu opakowuje plik web.bindery. Jednak implementacja gwt.event ukrywa także pewną liczbę przestarzałych metod. Którą implementację należy użyć? (Jestem na GWT 2.4)

+1

Mam ten sam dylemat. Być może wielu innych to robi. Ignoruję przestarzały poradnik i używam starego pakietu, ponieważ google stworzył tam bałagan. –

Odpowiedz

19

Generalnie powinieneś użyć tego w com.google.web.bindery. Jedyną wersją była wersja com.google.gwt.event, ale gdy RequestFactory i AutoBeans zostały przeniesione z GWT do com.google.web.bindery, aby mogły pracować w klientach innych niż GWT.

Jeśli używasz wersji com.google.web.bindery w prezenterach i tym podobnych, ułatwi to korzystanie z aplikacji GWT, jeśli zajdzie taka potrzeba. Nie dostaniesz również ostrzeżeń o przestarzałości podczas przekazywania tej instancji do PlaceController i innych klas korzystających z EventBus.

+0

Ah! Klienci spoza GWT mają tyle samo sensu. – checketts

+3

Jeśli używasz Aktywności i miejsc, Aktywność w metodzie początkowej wymaga com.google.gwt.event.shared.EventBus –

0

Aby dokonać wyboru jeszcze bardziej złożonego. Używam guavy w mojej aplikacji GWT, a goście z Google dodali jeszcze inny EventBus (jeszcze mniej funkcji jest kompletna).

Może ci goście muszą usiąść razem i zdefiniować JEDNĄ implementację, aby rządzić nimi wszystkimi?

Oczywiście chciałbym uniknąć wszystkich zależności od GWT dla kodu, który nie jest ściśle wykorzystywany w kodzie GWT, więc Guawa wyglądał interesująco.

4

Wiem, że to pytanie zawiera już odpowiedź, ale warto dodać kolejne. Jak już wspomniałem w powyższym komentarzu, aktywność nadal wymaga klasy com.google.gwt.event.shared.EventBus. Aby uniknąć nieaktualnych ostrzeżeń, zrobiłem następujące (używam GINA):

public class GinClientModule extends AbstractGinModule { 

    @Override 
    protected void configure() { 
     bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class); 
     ... 
    } 

    @Provides 
    @Singleton 
    public com.google.gwt.event.shared.EventBus adjustEventBus(
      EventBus busBindery) { 
     return (com.google.gwt.event.shared.EventBus) busBindery; 
    } 

... 

Dzięki temu zawsze będziesz przy użyciu obiektu z „nowej” wersji magistrali wydarzenie w pakiecie introligatorni.

Powiązane problemy