दिलचस्प पोस्ट
कैसे PowerShell के साथ एक ज़िप संग्रह बनाने के लिए? कैसे एक श्रेणी के लिए एक पूर्णांक दबाना? (पायथन में) जीसीसी के साथ सी प्रोग्राम के प्रवेश बिंदु को कैसे बदल सकता है? SerialPort कोई डेटा प्राप्त नहीं कर रहा है जांचें कि दो अनारॉर्डेड सूचियां समान हैं LinearLayout, RelativeLayout, और AbsoluteLayout के बीच अंतर क्या हैं? एक प्लगइन के बिना ओएस का पता लगाने के लिए jQuery / जावास्क्रिप्ट? क्या मुझे पर्ल रेगेक्स में अंकों का मिलान करने के लिए \ d या का उपयोग करना चाहिए? सहायक उपकरणों के लिए 10.9 पर प्रोग्रामेटिक रूप से प्रवेश सक्षम करें सूचक-टू-पॉइंटर के लिए 2 डी सरणी का रूपांतरण एंड्रॉइड ऐप मेमोरी के मुद्दों से बाहर – सब कुछ करने की कोशिश की और फिर भी नुकसान पर मैं पीपी के साथ एक स्थानीय कैश से कैसे स्थापित करूं? क्या SHA परिवार कार्यों की तुलना में एमडी 5 हैश कम सीपीयू की गणना है? मैं Xvfb में सेलेनियम कैसे चलाऊँ? "है" ऑपरेटर अनपेक्षित रूप से पूर्णांक के साथ व्यवहार करता है

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

मेरे पास है

<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>