2010-05-26 15 views
24

JSF में, वहाँ प्रत्येक पृष्ठ से संबद्ध एक viewstate है, जो आगे और पीछे प्रविष्टियों पर आदि के साथ पारित हो जाता है हैजेएसएफ में व्यूस्टेट क्या है, और इसका उपयोग कैसे किया जाता है?

मुझे पता है कि viewstate पृष्ठ पर विभिन्न नियंत्रणों के राज्यों का उपयोग कर गणना की जाती है, और आप स्टोर कर सकते हैं कि यह या तो ग्राहक पक्ष या सर्वर पक्ष।

सवाल यह है कि: यह मान कैसे उपयोग किया जाता है? क्या यह सबमिट करने के लिए भेजे गए मूल्यों को मान्य करने के लिए प्रयोग किया जाता है, यह सुनिश्चित करने के लिए कि एक ही अनुरोध दो बार नहीं भेजा गया है?

इसके अलावा, इसकी गणना कैसे की जाती है - मुझे एहसास है कि समृद्धों की गणना माइफेस से अलग की जा सकती है, लेकिन एक विचार अच्छा होगा।

धन्यवाद।

+0

वर्तमान में जेएसएफ समुदाय में दृश्य स्थिति के बारे में कुछ बहस है। यह बग रिपोर्ट देखें: http: // जावा।नेट/जिरा/ब्राउज़/JAVASERVERFACES_SPEC_PUBLIC-1055 –

उत्तर

24

प्रश्न यह है: यह मान का उपयोग कैसे किया जाता है? क्या यह सबमिट करने पर भेजे गए मानों को मान्य करने के लिए उपयोग किया जाता है, यह सुनिश्चित करने के लिए कि एक ही अनुरोध दो बार नहीं भेजा जाता है?

मूल कारण यह है कि व्यूस्टेट मौजूद है क्योंकि HTTP स्टेटलेस है। अनुरोधों के घटकों की स्थिति को एक या दूसरे तरीके से बनाए रखने की आवश्यकता है। या तो आप सर्वर को सर्वर पर स्मृति में संग्रहीत करते हैं और सत्र में बाध्य करते हैं, या हर बार अनुरोध/प्रतिक्रिया में इसे क्रमबद्ध/deserialize।

AFAIK, व्यूस्टेट का उपयोग डबल सबमिट का पता लगाने के लिए नहीं किया जाता है, लेकिन यदि आप टाइमस्टैम्प या उसके जैसा कुछ संलग्न कर सकते हैं।

viewstate भी यकीन है कि ग्राहक यह परिवर्तन नहीं करता है बनाने के लिए एन्क्रिप्टेड किया जा सकता है।

इसके अलावा, यह गणना कैसे की जाती है - मैं महसूस करते हैं कि richfaces myfaces से गणना अलग तरीके से किया जा सकता है, लेकिन एक विचार अच्छा होगा।

प्रत्येक घटक saveState और restoreState के साथ अपने राज्य जारी रहती है के लिए जिम्मेदार है (इस tutorial देखें)। तो अलग-अलग घटक सूट अलग-अलग दृश्य स्थिति में परिणाम देते हैं। इसी तरह, विभिन्न जेएसएफ कार्यान्वयन के परिणामस्वरूप अलग-अलग दृश्य स्थिति हो सकती है।

+0

"या तो आप सर्वर को सर्वर पर स्मृति में संग्रहीत करते हैं और सत्र में बाध्य करते हैं, या हर बार अनुरोध/प्रतिक्रिया में इसे क्रमबद्ध/deserialize।" मैं एक दूसरे को कैसे चुनूं? –

+1

@ कोरे टुगे कॉन्फ़िगर – ewernli

+0

में एक param javax.faces.STATE_SAVING_METHOD है, बहुत बहुत धन्यवाद। –

13

यदि आप जावास्क्रिप्ट से परिचित हैं, तो आप एक HTML DOM की तरह एक जेएसएफ घटक पेड़ के बारे में सोच सकते हैं जहां HTML पृष्ठ प्रारंभिक स्थिति को परिभाषित करता है लेकिन आप रनटाइम पर इसे बदल सकते हैं।

व्यू टेक्नोलॉजी (आमतौर पर जेएसपी या फेसलेट) प्रारंभिक स्थिति को परिभाषित करता है, लेकिन इसके बाद इसे प्रोग्रामिक रूप से छेड़छाड़ की जा सकती है। उदाहरण के लिए, आप component जोड़ सकते हैं या property सेट कर सकते हैं। इसके लिए सही तरीके से काम करने के लिए, दृश्य स्थिति अनुरोधों के बीच जारी रहनी चाहिए।

दृश्य स्थिति दो भागों में विभाजित है। पहले घटक पेड़ की संरचना को परिभाषित करता है:

UIView 
- UIForm 
    - UICommand 
    - UIInput 

दूसरा भाग घटकों की स्थिति को परिभाषित करता है। ये यूआईडीएटी जैसे घटकों के कारण अलग हैं, जहां बच्चों के लिए प्रति पंक्ति राज्य (उदाहरण के लिए) संभव है। यह StateHolder तंत्र के माध्यम से marshalled/unmarshalled है।

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

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