2012-04-10 19 views

उत्तर

18

setResponsePage क्या कुछ कारकों पर निर्भर है: आप कितनी बार setResponsePage को कॉल करते हैं, जो सेटरस्पॉन्सपेज का आप किस प्रकार कहते हैं और आप किस रणनीति का उपयोग करते हैं।

आप अनुरोध के दौरान कई बार setResponsePage पर कॉल कर सकते हैं। विकेट के साथ काम करने के लिए आखिरी एक का उपयोग करता है।

setResponsePage के दो प्रकार हैं: Page उदाहरण के साथ और Page कक्षा और PageParameters के साथ। उत्तरार्द्ध ब्राउज़र पर एक बुकमार्क करने योग्य यूआरएल पर रीडायरेक्ट भेजता है। पूर्व इच्छा, render strategy पर निर्भर करता है, या तो:

  • ONE_PASS_RENDER
    • ब्राउज़र
  • REDIRECT_TO_BUFFER
    • के लिए सीधे पेज प्रस्तुत करना एक बफर करने के लिए पेज प्रस्तुत करना, एक रीडायरेक्ट भेज ब्राउज़र (जो तब buffered, rendered markup पुनर्प्राप्त करता है), या
  • REDIRECT_TO_RENDER
    • ब्राउज़र है, जो फिर अनुरोध भेजता पेज

तो पहला विकल्प प्रेषण है रेंडर करने के लिए करने के लिए एक रीडायरेक्ट भेजने के लिए, दूसरा विकल्प एक रीडायरेक्ट के बाद प्रेषण है, और तीसरा विकल्प सर्वलेट शर्तों में रीडायरेक्ट किया जाएगा।

+0

@ मार्टिन डैशोरस्ट: क्या ब्राउजर REDIRECT_TO_BUFFER में 302 देखता है? अनुरोध URL:: – bert

+1

बस मेरी परियोजना के साथ इसे करने की कोशिश http: // localhost: 8080/सोम/ऐप्स/घर 14-2.ILinkListener-मेनू बायोग्राफ़ी अनुरोध विधि: प्राप्त स्थिति कोड: 302 मिली तो हां, विकेट उस मामले में 302 भेजता है। –

+0

@ मार्टिन डैशोरस्ट: धन्यवाद, यह वास्तविकता बताती है कि हमारे पास 302 क्यों है जो बफर की वजह से 2, रिकक्स्ट, से अधिक समय लेता है। बढ़िया, एक और रहस्य हल हो गया;) – bert

1

setResponsePage (PageName.class) ब्राउज़र को उस पृष्ठनाम पर रीडायरेक्ट करेगा जिसे आपको जाना है। सुनिश्चित करें कि, आप पहले से ही अपने पेज.क्लास को किसी दिए गए पथ पर माउंट कर चुके हैं। उदाहरण के लिए, आपके एप्लिकेशन init विधि में, आप इस माउंटपेज ("/ home.html", WelcomePage.class) की तरह माउंट कर सकते हैं; फिर किसी अन्य पृष्ठ में, जब आपको होम पेज पर जाने की आवश्यकता होती है, तो आप बस इस setResponsePage (WelcomePage.class) की तरह कॉल करें;

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