2008-09-17 8 views
5

मैं समुद्रतट में एक छोटा सा वेब एप्लिकेशन बना रहा हूं। मेरे पास एक लॉगिन घटक है, और उपयोगकर्ता लॉग इन करने के बाद मैं एक कुकी के साथ भेजना चाहता हूं जब अगला घटक स्वयं प्रस्तुत करता है। क्या प्रतिक्रिया को संभालने वाली वस्तु को प्राप्त करने का कोई तरीका है ताकि मैं हेडर में कुछ जोड़ सकूं जो आउटपुट करेगा?रीडायरेक्ट किए बिना समुद्र किनारे प्रतिक्रियाओं में कुकीज़ कैसे जोड़ूं?

मैं WASession >> redirectWithCookies का उपयोग कर से बचने के लिए, क्योंकि यह केवल रीडायरेक्ट करने के लिए है क्योंकि मैं एक कुकी सेट करना चाहते हैं सुंदर kludgey लगता है कोशिश कर रहा हूँ।

वहाँ एक और तरीका है कि पहले से ही एक कुकी है कि अगले प्रतिक्रिया पर बाहर जाना होगा जोड़ने के लिए मौजूद है?

उत्तर

5

वर्तमान में कोई अंतर्निहित तरीका अनुरोध प्रसंस्करण की कार्रवाई/कॉलबैक चरण के दौरान कुकीज़ को जोड़ने के लिए नहीं है। यह संभवत: एक दोष है और इस मुद्दे में उल्लेख किया गया है: http://code.google.com/p/seaside/issues/detail?id=48

वर्तमान में यह समुद्रतट 2.9 के लिए तय किया जाना है, लेकिन मुझे नहीं पता कि इसे 2.8 या फिर भी वापस भेज दिया जाएगा या नहीं।

ध्यान रखें कि पहले से ही (डिफ़ॉल्ट रूप से) कॉलबैक को दोबारा शुरू करने से ताज़ा करने के लिए कार्रवाई और प्रतिपादन चरणों के बीच एक पुनर्निर्देशन है, इसलिए चीजों की भव्य योजना में, इस मामले में एक और रीडायरेक्ट ' टी तो खराब।

आप अभी भी आगे खुदाई करने के लिए चाहते हैं, पर WARenderContinuation >> handleRequest एक नजर है :. यही वह जगह है जहां कॉलबैक प्रोसेसिंग ट्रिगर होती है और रीडायरेक्ट या रेंडरिंग चरण शुरू हो जाता है।

जोड़ने के लिए संपादित:

मुद्दा अब तय किया गया है और (नवीनतम विकास कोड में) आप अब ठीक से किसी भी समय वर्तमान प्रतिक्रिया करने के लिए कुकीज़ जोड़ सकते हैं। वर्तमान अनुरोध संदर्भ में प्रतिक्रिया ऑब्जेक्ट तक पहुंचें और कुकी जोड़ें।

self requestContext response addCookie: aCookie 

यह 2.8 समुंदर के किनारे करने के लिए के रूप में यह रास्ता प्रतिक्रियाएं नियंत्रित किया जाता है में एक काफी बड़ा बदलाव आवश्यक बैकपोर्टेड होने की संभावना नहीं है: उदाहरण के लिए, आप कुछ की तरह कर सकते हैं।

+0

मैं कोड में नियंत्रण के प्रवाह के रूप में पुनर्निर्देशन के बारे में इतना चिंतित नहीं हूं। धन्यवाद, :) –

4

मैं सिर्फ गहराई में इस देखा है, और जवाब नहीं हो रहा है। विशेष रूप से, WARenderCanvas या कुछ भी उस तक पहुँच सकते से प्रतिक्रिया पर प्राप्त करने के लिए कोई रास्ता नहीं है (यह WARenderingContext, जो WAHtmlStreamDocument, जो प्रतिक्रिया के धारा पर रखती है, लेकिन पर रखती है पर धारण नहीं प्रतिक्रिया ही)। मुझे लगता है कि मौजूदा प्रतिक्रिया तक संदर्भ पहुंच देना उचित होगा, ठीक उसी पर हेडर सेट करने में सक्षम होने के लिए, लेकिन आपने पूछा कि क्या पहले से ही कोई तरीका है, इसलिए: नहीं।

उस ने कहा, समुद्रतट बहुत अधिक पुनर्निर्देशन करता है, और ऐसा लगता है कि उपयोगकर्ता अनुभव पर अधिक प्रभाव नहीं पड़ता है, तो हो सकता है कि ऐसा करने के लिए चिंता करना बंद हो जाए और इसके प्रवाह के साथ जाएं एपीआई है कि पहले से ही वहाँ :)

+0

मैं यह पता लगाने की कोशिश कर रहा था कि एक घटक अनुरोध को कैसे संभाल सकता है और फिर एक अलग घटक प्रस्तुत करता है। पहले रीडायरेक्ट करने के बाद अन्य घटक प्रस्तुत करना कोड के डिज़ाइन में एक अतिरिक्त कदम जोड़ता है। ओह ठीक है, मैं अभी भी सीख रहा हूँ। धन्यवाद, :) –

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