2010-05-12 17 views
16

कृपया एक नज़र इस पर कोड की रेखा से नीचे JSF में java.sun.com सेजेएसएफ: प्रारंभिक अनुरोध और पोस्टबैक अनुरोध?

<h:inputText id="name" value="#{customer.name}" /> 

उद्धरण ले:

इस टैग वाले पेज की एक प्रारंभिक अनुरोध के लिए, जावा सर्वर कार्यान्वयन चेहरे लाइफसाइक्ल के रेंडर प्रतिक्रिया चरण के दौरान #{customer.name} अभिव्यक्ति का मूल्यांकन करता है। इस चरण के दौरान, अभिव्यक्ति केवल ग्राहक बीन से नाम के मूल्य तक पहुंच जाती है, जैसा तत्काल मूल्यांकन में किया जाता है।

एक पोस्टबैक अनुरोध के लिए, जावासेवर फेस कार्यान्वयन जीवन चक्र के विभिन्न चरणों में अभिव्यक्ति का मूल्यांकन करता है, जिसके दौरान मूल्य अनुरोध, सत्यापित, और ग्राहक बीन को प्रचारित किया जाता है।

मुझे यकीन है कि मैं प्रारंभिक अनुरोध बनाम पोस्टबैक अनुरोध समझ में नहीं कर रहा हूँ। क्या ग्राहक ब्राउज़र वेबसर्वर को दो अलग-अलग अनुरोध करता है?

उत्तर

12

प्रारंभिक अनुरोध यह अनुरोध है कि ब्राउज़र ${customer.name} टैग के साथ पृष्ठ प्रदर्शित करने के लिए करता है। पोस्टबैक तब होता है जब ब्राउज़र कुछ या सभी पृष्ठ मान पोस्ट करता है और फिर उसी पृष्ठ को पोस्ट किया गया था जो पहले स्थान पर पोस्ट किया गया था। यह सत्यापन त्रुटि के परिणामस्वरूप उदाहरण के लिए हो सकता है।

यह जानकर कि वर्तमान दृश्य प्रस्तुत किया जा रहा है, एक पोस्टबैक का परिणाम उपयोगी है। उदाहरण के लिए आप एक पोस्टबैक के परिणामस्वरूप एक संदेश प्रदर्शित करना चाहते हैं, लेकिन हर बार पेज रीफ्रेश नहीं होता है।

23

प्रारंभिक अनुरोध केवल & रेंडर प्रतिक्रिया चरण पास करता है, जबकि सभी चरणों के तहत पोस्टबैक अनुरोध प्रक्रिया (अनुरोध मान मान, सत्यापन चरण, आदि)।

प्रारंभिक अनुरोध एक लिंक पर क्लिक करके बनाया गया है, पता बार में एक यूआरएल चिपका रहा है, जबकि एक पोस्टबैक अनुरोध सबमिट बटन या किसी भी पोस्ट अनुरोध पर क्लिक करके फॉर्म पोस्ट करके बनाया गया है।

+1

हर समय नहीं। व्यू पैरामीटर के साथ प्रारंभिक जीईटी अनुरोध के मामले में सभी 6 चरणों को निष्पादित किया जाएगा। –

+0

यह उत्तर 100% सही नहीं है। @ShirgillFarhanAnsari की टिप्पणी सही है और जवाब बेहतर अद्यतन किया गया है। –

0

आम तौर पर जब आप ब्राउज़र पर जाते हैं और अपने ऐप में यूआरएल में लिखते हैं तो आपके पास केवल एक प्रारंभिक अनुरोध होगा। यह आपके कुकीज़ के साथ सर्वर को एक HTTP GET अनुरोध करता है उदा। JSESSIONID, लेकिन एक javax.faces.viewid के साथ पुनर्स्थापित करने के लिए नहीं।

जब आपके पास एक खुला पृष्ठ होता है और आप हैकी सामान चाटना करते हैं: window.location = newUrl -> आप प्रारंभिक अनुरोध भी करेंगे।

इसके बजाए आप jQuery ("# ​​somoeSubmitButton") जैसे कुछ करते हैं। क्लिक करें(), आप सर्वर पर पोस्ट करेंगे और आपका पुराना दृश्य पुनर्स्थापित किया जाएगा - और यदि आप चेहरे का संदर्भ पूछते हैं .isPostback()? आप सच हो जाएंगे

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