मेरे पास ऑर्डर नामक एक पृष्ठ है और ऑर्डर डिस्प्ले नामक एक पृष्ठ है। जैसा कि उत्कृष्ट MVP tutorial में वर्णित है, मैं इतिहास (एक केंद्रीय ValueChangeListener के साथ) और एक "ईवेंट बस" हैंडलर प्रबंधक के साथ काम कर रहा हूं।पैरामीटर पास करने के लिए जीडब्ल्यूटी इतिहास का उपयोग करना?
मैं एक हैंडलर घटना है कि किसी को एक आदेश है, जो मूल रूप से OrderDetailPresenter बनाता है, में आदेश आईडी (जो ShowOrderDetailEvent में निहित है) से गुजरता है पर क्लिक करता है के लिए पंजीकृत है, और फिर History.newItem("orderDetails")
कहता है।
इसमें कुछ प्रमुख नुकसान हैं: यह नव निर्मित इतिहास चरण यह नहीं जानता कि कौन सी ऑर्डर आईडी पास की गई थी। उदाहरण के लिए, यदि कोई ऑर्डर विवरण पृष्ठ बुक करता है (या फिर अपने ब्राउज़र में आगे जाता है), तो वे ' ऑर्डर विवरण के साथ एक खाली पृष्ठ मिलेगा।
तो मेरा सवाल है: क्या मुझे इसके बजाय History.newItem("orderDetails?id="+id)
जैसे कुछ करना चाहिए, और फिर मेरे मूल्य परिवर्तन श्रोता में इतिहास टोकन का विश्लेषण करना चाहिए? यदि हां, तो क्या इस तरह से स्ट्रिंग में तर्कों को स्वरूपित करने और स्वरूपण के लिए एक सर्वोत्तम अभ्यास, एक एपीआई, या लाइब्रेरी है?
असल GWT (स्पष्ट करने के लिए कि इस मुद्दे के बारे में मैं बात कर रहा हूँ लेकिन समान URL कई विभिन्न ब्राउज़रों में काम कर रही है, की बिल्कुल नहीं विभिन्न ब्राउज़रों में से प्रत्येक में इतिहास टोकन विधि काम होने के साथ काम कर रहा है संपादित) ब्राउज़र में मतभेदों को ध्यान में रखता है। यह यहां वर्णित कई अलग-अलग मुद्दों के आसपास भी काम करता है। तो आप किसी भी वर्णित वर्णों का उपयोग कर सकते हैं। यदि आप इसे देखना चाहते हैं, तो 'gwt-user.jar' (gwt 2.0) फ़ाइल में' com.google.gwt.user.client.impl.HistoryImpl 'कक्षाओं पर एक नज़र डालें। और यह डी/एन्कोडिंग भी करता है ताकि आप '@' में पास हो सकें और यह इसका ख्याल रखेगा। –
बहुत अच्छा लगता है। मैंने नोटिस किया कि जीमेल वास्तव में यह भी करता है, अगर मैं उदाहरण के लिए लेबल पर क्लिक करता हूं, तो यूआरएल "... # इनबॉक्स/लेबलनाम" में बदल जाता है। वे URL नाम लेबल को एन्कोड करते हैं, इसलिए, मैं URL.encode और URL.decode के साथ ऐसा ही कर रहा हूं। – Epaga
बस पूरा होने के लिए। यदि आप 'History.newItem (..)' का उपयोग करते हैं, तो आपको डीकोड/एन्कोड नहीं करना चाहिए, क्योंकि जीडब्ल्यूटी पहले से ही आपके लिए यह करता है। वास्तव में यदि आप ऐसा करते हैं, तो यह फ़ायरफ़ॉक्स के बारे में बताई गई समस्याओं का कारण बन सकता है। –