मेरे जेएसएफ 2 आधारित एप्लिकेशन में मेरे पास एक ऐसा फॉर्म है जिसमें कुछ अन्य चेकबॉक्स शामिल हैं।सत्यापन त्रुटि के बाद बाद में AJAX अनुरोध UI घटक से मान प्राप्त करते हैं, बीन्स
चेकबॉक्स पर मैंने AJAX अनुरोध पंजीकृत किए हैं, जब वे चेक किए जाते हैं। AJAX अनुरोध वास्तव में बैकिंग बीन में किसी अन्य चेकबॉक्स के मान को अपडेट करेंगे। नतीजतन अन्य चेकबॉक्स भी चेक किए जाएंगे (जब इसे फिर से प्रस्तुत किया जाता है - क्योंकि यह प्रतिक्रिया प्रतिक्रिया चरण में बैकिंग बीन से अद्यतन मूल्य ले जाएगा)।
यह तब तक ठीक काम करता है जब तक पूरा फॉर्म सबमिट नहीं हो जाता है और सत्यापन त्रुटियां होती हैं। फिर AJAX अनुरोध बैकिंग बीन पर मान को काम करते हैं और बदलते हैं लेकिन अपडेट किए गए चेकबॉक्स को फिर से प्रस्तुत करने के चरण में इसके लिए मान बैकिंग बीन से नहीं लिया जाता है, लेकिन ComponentStateHelper
कक्षा से लिया गया कैश वैल्यू से लिया जाता है।
जहां तक मैं समझता हूं कि इसका उपयोग जेएसएफ 2 की नई सुविधा के लिए केवल घटक पेड़ में आंशिक परिवर्तनों को संग्रहीत करने के लिए किया जाता है।
जो मुझे समझ में नहीं आता है यह है: यह सत्यापन चरण से कैसे संबंधित है? प्रमाणीकरण त्रुटियों के दौरान मेरे चेकबॉक्स के लिए StateHelper
कक्षा में कैश किए गए मान क्यों हैं?
आपके उत्तर के लिए बहुत बहुत धन्यवाद। मैं पहले से ही अपने प्रोजेक्ट में अपनी सर्वव्यापी lib को शामिल कर चुका था ('FullAjaxExceptionHandlerFactory' के लिए)। इसलिए मेरी 'चेहरे-config.xml' फ़ाइल में' ResetInputAjaxActionListener' को शामिल करना आसान था। लेकिन इसे केवल 'InvokeAplicationPhase' में बुलाया जाता है जो मेरे AJAX अनुरोध द्वारा नहीं मारा जाता है। मेरा AJAX अनुरोध '' द्वारा ट्रिगर किया गया है और वहां ' 'द्वारा किया गया है। लेकिन मैं इस पर एक नज़र डालेगा। मैंने बस आपके सुझाव की जल्दी कोशिश की। –
Jens
यह हिट नहीं है? क्या आपको यकीन है? चेहरे-कॉन्फ़िगरेशन को संपादित करने के बाद आपको सर्वर को पुनरारंभ करने की आवश्यकता हो सकती है। – BalusC
मैंने इसे पुनरारंभ किया और मैंने omnifaces का स्रोत जोड़ा और यह देखने के लिए ब्रेकपॉइंट सेट किया कि यह बिल्कुल हिट हो जाता है या नहीं। यह नियमित अनुरोधों पर हिट हो जाता है लेकिन अजाक्स अनुरोध पर नहीं जो चेकबॉक्स के चयन से ट्रिगर होता है। – Jens