दिलचस्प पोस्ट
ब्राउज़र का आकार बदलते समय jqGrid का आकार बदलें? क्या कारक PHP यूनिकोड-असंगत बनाते हैं? एक HTML पृष्ठ पर स्क्रॉलबार छिपा रहा है सी # – आर इंटरफ़ेस कैसे एक हॅशमैप या एक HashTable में जावा आदेश आइटम करता है? जीएसएन: एनोटेशन के बिना विशिष्ट क्षेत्रों को सीरियलाइजेशन से बाहर कैसे करें न्यूनतम संभव विंडोज (पीई) निष्पादन योग्य क्या है? SQL सर्वर में पैरामीटर सूँघने (या स्पूफ़िंग) डेटाबेस परिणाम से बहुआयामी सरणी उत्पन्न करने के लिए रिकर्सिव फ़ंक्शन क्रियाओं को वास्तव में आवश्यक है? उद्देश्य सी: SHA1 Django में इनलाइन फॉर्म सत्यापन Python / pyqt पर एक qtDesigner .ui फ़ाइल को लिंक करना? एंड्रॉइड एम अनुमतियां: ऑन-विन्यास प्रस्तुतियाँ () को कॉल नहीं किया जा रहा है मैं लिनक्स में C ++ कोड को कैसे चल सकता हूं?

एजाक्स द्वारा अन्य रूप को प्रस्तुत करना, इसके दृश्य स्थिति को खो जाने के कारण होता है, मैं इसे वापस कैसे जोड़ूं?

मेरे पास है

<h:form> <h:commandLink action="#{my_fake_ajax_link}"> <h:outputText value="Link" /> <f:ajax render=":mydiv" /> </h:commandLink> </h:form> <h:panelGroup layout="block" id="mydiv"> <h:form> <h:commandLink action="#{mybean.delete(0)}"> <h:outputText value="Here" /> <f:ajax render="@form" /> </h:commandLink> </h:form> </h:panelGroup> 

जब मैं "my_fake_ajax_link" पर एक बार क्लिक करता हूं, तो मुझे "हटाएं" लिंक पर दो बार क्लिक करना होगा यह केवल एक उदाहरण है मेरे पास यह असली मामला नहीं है मेरे पास एक पृष्ठ पर कई रूप हैं और मैं सिर्फ उन सभी को एक ही रूप में जोड़ नहीं सकता

मैंने जांच की कि समस्या क्या है और यह है:

  • जब आप "my_fake_ajax_link" पर क्लिक करते हैं, तो एजेएक्स के साथ mydiv रिफ्रेश को चाहिए
  • एजेक्स पर रिफ्रेश फॉर्म का व्यूस्ट्रेस लापता है।

मैं व्यूस्टेट कैसे जोड़ सकता हूं? मैं इसे एक ही रूप का उपयोग किए बिना कैसे काम कर सकता हूं? यह मेरे लिए JSF बग की तरह दिखता है मैं उस div को स्वचालित रूप से रीफ़्रेश नहीं करना चाहता

 jQuery("#mydiv").load(document.location.href); 

लेकिन मैं अपने सबसे बुरे मामले में संभव होगा।

वेब के समाधान से एकत्रित समाधान "एजाक्स द्वारा अन्य रूप को प्रस्तुत करना, इसके दृश्य स्थिति को खो जाने के कारण होता है, मैं इसे वापस कैसे जोड़ूं?"

जेएसएफ के ऑटो-शामिल jsf.js लाइब्रेरी में यह एक ज्ञात समस्या है जो jsf.js प्रतिक्रियाएं संभालती है। जेएसएफ स्पेक अंक 790 भी देखें जो कि आगामी जेएसएफ 2.3 में तय की गई है। इस बीच, JSF 2.0 / 2.1 / 2.2 के साथ, आपको स्पष्ट रूप से दूसरे <h:form> को देखने के लिए उचित स्थिति को जोड़ने के लिए render attribtue के आईडी निर्दिष्ट <h:form>

 <h:form> <h:commandLink action="#{my_fake_ajax_link}"> <h:outputText value="Link" /> <f:ajax render=":mydiv :mydivForm" /> </h:commandLink> </h:form> <h:panelGroup layout="block" id="mydiv"> <h:form id="mydivForm"> <h:commandLink action="#{mybean.delete(0)}"> <h:outputText value="Here" /> <f:ajax render="@form" /> </h:commandLink> </h:form> </h:panelGroup> 

नहीं, यह एजेक्स प्रतिक्रिया में कोई ओवरहेड या मार्कअप दोहराव का कारण नहीं है। वैकल्पिक रूप से, OmniFaces का उपयोग करें viewviewstate.js

यह भी देखें:

  • जेएसएफ 2.0 में संचार – सामग्री का अजाक्स रेंडरिंग जिसमें दूसरा प्रपत्र शामिल है
  • h: कमांड बटन / h: commandLink पहले क्लिक पर काम नहीं करता, केवल दूसरे क्लिक पर काम करता है

उस के लिए वैकल्पिक हल:

सबसे पहले आपको onevent अनुरोध भेजने वाले बटन के लिए एक एक हेन्डलर सेट करना onevent :

 <h:form id="newComment"> <h:commandButton id="saveNewComment" action="#{postBean.actionSaveNewCommentAjax}" value="#{rb['speichern']}"> <f:ajax execute="@form" render=":commentsBox" onevent="function(data) { fixOtherFormsViewState(data, 'newComment') }" /> </h:commandButton> </h:form> 

फिर आपको इस जावास्क्रिप्ट विधियों को घोषित करने की आवश्यकता है जो सही व्यूस्टेट मान लेते हैं और उन सभी रूपों में जोड़ दें, जिनके पास नहीं है:

 <h:outputScript> function fixOtherFormsViewState(data, goodFormId) { if (data.status != "success") { return; } var viewState = jQuery("#" + goodFormId + " input[name='javax.faces.ViewState']").val(); jQuery("form:not(:contains(input[name='javax.faces.ViewState']))").each(function (idx, elem) { var form = jQuery(elem); var input = jQuery("&lt;input type='hidden' name='javax.faces.ViewState' /&gt;").val(viewState); form.append(input); }); } </h:outputScript>