2010-06-05 18 views
5

मूल रूप से मेरे पास grails फ़िल्टर के संबंध में 2 प्रश्न हैं।grails फ़िल्टर के बारे में प्रश्न

  1. grails प्रलेखन के अनुसार आप एक फिल्टर
if (userId != paramsUserId) { 
    flash.message = "You can only modify yourself" 
    redirect(action: 'list') 
    return false 
} 

यदि उपरोक्त हालत तो कैसे वापसी कथन निष्पादित हो जाएगा सच है में नीचे की तरह कुछ कर सकते हैं?

  1. क्या मेरे पास मेरे फ़िल्टर में कुछ क्रियाओं में रीडायरेक्ट हो सकता है जिसमें रीडायरेक्ट भी है?

उत्तर

6

1 - फ़िल्टर से झूठ लौटने से आगे फ़िल्टर (और अगर यह पहले फ़िल्टर में है तो कार्रवाई) से रोकता है। ब्राउज़र को 302 रीडायरेक्ट मिलेगा और 'सूची' विधि पर जायेगा जिसे आपने रीडायरेक्ट करने के लिए कहा है।

http://grails.org/doc/2.3.7/guide/single.html#filterTypes

2 - हां। रीडायरेक्ट करने वाले किसी अन्य चीज़ पर रीडायरेक्ट करना ठीक है। यह वास्तव में ब्राउज़र से कोई फर्क नहीं पड़ता। यदि आप इसे फायरबग में देखते हैं, तो आप देखेंगे कि वास्तव में एक रीडायरेक्ट क्या है। जब आप ब्राउज़र को रीडायरेक्ट करते हैं तो 302 ("मिला") के HTTP स्टेटस कोड के साथ प्रतिक्रिया प्राप्त होती है, इस प्रतिक्रिया में यूआरएल भी शामिल होता है जिसे ब्राउजर को अगली बार अनुरोध करना चाहिए (जिस चीज को आप रीडायरेक्ट कर रहे हैं, यानी "सूची" के लिए यूआरएल ऊपर उदाहरण में विधि)। ब्राउज़र तब यूआरएल का अनुरोध करता है और यह व्यवहार करता है जैसे कि यह पहला अनुरोध था।

यही कारण है कि फ्लैश स्कोप इतना उपयोगी है, फ्लैश स्कोप में चीजें अगले अनुरोध तक लाइव रहती हैं, इसलिए वे रीडायरेक्ट करते हैं।

+0

कुछ सर्वलेट कंटेनर (टोमकैट की तरह) के साथ, आपको बहुत से रीडायरेक्ट भेजने के बारे में सावधान रहना होगा। – Blacktiger

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