2011-03-01 13 views
6

मुझे पता है कि आप पोर्टल बना सकते हैं जो JSR286 resourceURL टैग का उपयोग करके और AJAX कॉल करके पूरे पोर्टल पेज को रीफ्रेश किए बिना अपनी सामग्री को रीफ्रेश कर सकता है।अंतर पोर्टल संचार के लिए AJAX संभव है?

मेरे सवाल है, यह Portlet एक में एक AJAX कॉल करने के लिए और किसी तरह लक्षित करते हैं और गतिशील बजाय Portlet बी अद्यतन हो सकता है? जो पोर्टल पृष्ठ ताज़ा (फिर से प्रतिपादन) जब आप actionURL या घटनाओं के माध्यम से अंतर-portlet संचार कर

विचार से बचना है।

+0

ही के लिए खोज ... किया आपको कुछ रास्ता मिल रहा है? –

उत्तर

0

Portlet बी सर्वर-साइड तर्क प्रदर्शन करने की जरूरत नहीं है, तो आप बस पब/उप ग्राहक पर इस्तेमाल करते हैं और Portlet बी एक विशेष घटना है कि Portlet एक प्रकाशित करेंगे बात सुनो हो सकता था।

तो प्रवाह है:

  1. inital HTML पृष्ठ ग्राहक के लिए भेज दिया जाता है Portlet ए और बी Portlet पर साथ,।
  2. ग्राहक पर पब/सब सिस्टम प्रारंभ किया गया है। शायद amplifyjs जैसे कुछ का उपयोग करें।
  3. क्लाइंट पर पोर्टलेट बी "MyDataUpdated" (या जो भी सार्थक नाम आप विषय देना चाहते हैं) के लिए पंजीकृत है।
  4. क्लाइंट XHR के माध्यम से पोर्टलेट ए को एक सेवा संसाधन कॉल ट्रिगर करता है।
  5. सर्वर पर पोर्टलेट ए सेवा संसाधन कॉल के लिए तर्क करता है।
  6. सर्वर पर पोर्टलेट ए ग्राहक को अपनी प्रतिक्रिया वापस भेजता है।
  7. ग्राहक पर पोर्टलेट ए सेवा संसाधन प्रतिक्रिया का उपभोग करता है और "MyDataUpdated" विषय का उपयोग करके परिणाम प्रकाशित करता है।
  8. क्लाइंट पर पोर्टलेट बी "MyDataUpdated" ईवेंट की अधिसूचना प्राप्त करता है।
  9. क्लाइंट पर पोर्टलेट बी स्वयं को रीफ्रेश कर सकता है।

इस तरह से पब/उप का उपयोग करके एक दूसरे से पोर्टल decouples। यदि पोर्टलेट ए मौजूद नहीं है, तो पोर्टलेट बी टूट नहीं जाता है। अगर पोर्टल बी मौजूद नहीं है, तो पोर्टलेट ए टूट नहीं जाता है।

और अगर Portlet सी आता है के साथ और भी MyData प्राप्त करने में सक्षम है, इस portlet भी प्रकाशित करने "MyDataUpdated" घटनाओं शुरू सकता है, और Portlet बी इन घटनाओं भी पाने के लिए शुरू कर देंगे। यह मुफ्त में नए अपडेट हो जाता है!

+1

यदि आप हैं तो कृपया कृपया कुछ ट्यूटोरियल या टिप्स संसाधन प्रदान करें। धन्यवाद – Scorpion

1

आप पोर्टलेट के बीच संवाद करने के लिए jQuery ट्रिगर() और बाइंड() विधियों का उपयोग कर सकते हैं। इस दृष्टिकोण के साथ सभी संचार किसी भी सर्वर पर बातचीत के बिना क्लाइंटसाइड (ब्राउज़र) पर होगा।

portlet बी है कि घटना को सुनता है की तरह कुछ करना चाहिए:

$(document).bind("myevent", function(event, param) { 
    // do your work here 
    alert("message recieved with data " + param); 
}); 

portlet एक है कि आग घटना के बाद करना चाहिए:

$(document).trigger("myevent", "mydata");