2012-01-20 9 views
20

gwt-user.jar में 2 EventBus इंटरफेस और SimpleEventBus प्रत्यारोपण हैं।मैं किस जीडब्ल्यूटी इवेंटबस का उपयोग करूँ?

com.google.gwt.event.shared.EventBus और com.google.web.bindery.event.shared.EventBus मैं इन्हें 'gwt.event' और 'web.bindery' के रूप में संदर्भित करूंगा।

जावाडॉक्स और स्रोत कोड को देखते हुए मैं देख सकता हूं कि gwt.event केवल वेब को लपेटता है। बाइंडरी एक। हालांकि gwt.event कार्यान्वयन कई बहिष्कृत विधियों को भी छिपाता है

तो मुझे किस कार्यान्वयन का उपयोग करना चाहिए? (मैं जीडब्ल्यूटी 2.4 पर हूं)

+1

मुझे एक ही दुविधा है। शायद, कई अन्य लोग करते हैं। मैं बहिष्कृत सलाहकार को अनदेखा करता हूं और पुराने पैकेज का उपयोग करता हूं, क्योंकि Google ने वहां एक गड़बड़ी की है। –

उत्तर

19

आम तौर पर आपको com.google.web.bindery में एक का उपयोग करना चाहिए। एकमात्र संस्करण com.google.gwt.event में उपयोग किया जाता था, लेकिन जब अनुरोध फैक्ट्री और ऑटोबीन स्वयं को जीडब्ल्यूटी से बाहर ले जाया गया था और com.google.web.bindery में तो वे गैर-जीडब्ल्यूटी ग्राहकों में काम कर सकते थे।

यदि आप अपने प्रस्तुतकर्ताओं में com.google.web.bindery संस्करण का उपयोग करते हैं, तो इससे आपको जीडब्ल्यूटी ऐप्स के बाहर उपयोग करना आसान हो जाएगा, आपको इसकी आवश्यकता होनी चाहिए। उस उदाहरण को PlaceController और इवेंटबस का उपयोग करने वाले अन्य वर्गों को पार करते समय आपको बहिष्करण चेतावनियां भी नहीं मिलेंगी।

+0

आह! गैर-जीडब्ल्यूटी क्लाइंट इतना समझ में आता है। – checketts

+3

यदि आप गतिविधि और स्थान का उपयोग करते हैं, तो प्रारंभ विधि में गतिविधि com.google.gwt.event.shared.EventBus –

2

यदि आप क्रियाकलापों का उपयोग करते हैं, तो आपको संभवतः पूरे एपीआई को साफ़ करने तक कम से कम बहिष्कृत करना होगा: http://code.google.com/p/google-web-toolkit/issues/detail?id=6653

+0

समस्या लिंक के लिए धन्यवाद चाहता है। मैं सही समस्या में भाग गया होता। – checketts

0

विकल्प को और भी जटिल बनाने के लिए। मैं अपने जीडब्ल्यूटी एप्लिकेशन में अमरूद का उपयोग कर रहा हूं और Google लोगों ने अभी तक एक और इवेंटबस जोड़ा है (यहां तक ​​कि कम सुविधा भी पूर्ण है)।

शायद उन लोगों को एक साथ बैठने और उन सभी पर शासन करने के लिए एक कार्यान्वयन को परिभाषित करने की आवश्यकता है?

स्पष्ट रूप से मैं जीडब्ल्यूटी कोड पर सभी निर्भरताओं से बचना चाहता हूं जो कि जीडब्ल्यूटी कोड में सख्ती से उपयोग नहीं किया जाता है, इसलिए अमरूद मुझे दिलचस्प लग रहा था।

4

मुझे पता है कि इस प्रश्न का पहले से ही एक जवाब है लेकिन निम्नलिखित जोड़ने के दौरान यह मूल्यवान हो सकता है। जैसा कि मैंने उपरोक्त मेरी टिप्पणी में कहा है, गतिविधि को अभी भी com.google.gwt.event.shared.EventBus क्लास की आवश्यकता है। पदावनत चेतावनी बचने के लिए, मैं निम्नलिखित (मैं जिन का उपयोग करें) किया:

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; 
    } 

... 

ऐसा करने से, आप हमेशा 'नई' जिल्द पैकेज में घटना बस के संस्करण से वस्तु का उपयोग कर सकेंगे।

संबंधित मुद्दे