मुझे जेएसएफ पर AJAX के बारे में कुछ संदेह हैं।malformedXML: अद्यतन के दौरान: adminUsersForm नहीं मिला
मेरे एक्सएचटीएमएल इस तरह दिखता है:
<h:body>
<h:form id="menuForm">
<h:outputLabel for="menu">Available actions: </h:outputLabel>
<h:selectOneMenu id="menu" value="#{menu.mainMenuItem}">
<f:selectItem itemLabel="Select an option..." itemValue="null" />
<f:selectItems value="#{menu.mainMenuItems}" />
<f:ajax render=":menuForm :adminUsersForm :loadInfoForm :viewFilesForm" />
<!-- <f:ajax render="@all" /> -->
</h:selectOneMenu>
</h:form>
<h:form id="adminUsersForm"
rendered="#{menu.mainMenuItem == 'Admin users.'}">
<h:commandButton value="Button 1" />
</h:form>
<h:form id="loadInfoForm"
rendered="#{menu.mainMenuItem == 'Load info.'}">
<h:commandButton value="Button 2" />
</h:form>
<h:form id="viewFilesForm"
rendered="#{menu.mainMenuItem == 'View files.'}">
<h:commandButton value="Button 3" />
</h:form>
</h:body>
जब मैं <f:ajax render=":menuForm :adminUsersForm :loadInfoForm :viewFilesForm" />
का उपयोग जब मैं <f:ajax render="@all" />
सही <h:form>
प्रतिपादन का इस्तेमाल मैं malformedXML त्रुटि मिलती है, दूसरे हाथ पर।
यहां क्या हो रहा है? मैंने पढ़ा है कि AJAX का उपयोग करके हम केवल फॉर्म के अंदर घटक प्रस्तुत कर सकते हैं, लेकिन यदि हम :componentID
का उपयोग करते हैं तो यह फ़ॉर्म के बाहर AJAX- घटक को प्रस्तुत करना संभव है।
अग्रिम धन्यवाद, और शायद यह एक बुनियादी सवाल है लेकिन मैं जेएसएफ के लिए बहुत नया हूं और सीखने की कोशिश कर रहा हूं।
ठीक है, समझ गया। ' 'और' '?? क्योंकि दूसरा विकल्प तब भी काम करता था जब कोई मूल घटक हमेशा उपस्थित नहीं होता था। बस स्पष्ट अवधारणाएं चाहते हैं। धन्यवाद –
BRabbit27
स्थानांतरित डेटा में प्रमुख अंतर है। यदि आपके पास फॉर्म के बाहर बहुत सारी सामग्री है, तो '@ all' अनावश्यक डेटा स्थानांतरित करेगा जो प्रतिक्रिया आकार को बड़ा बनाता है जिससे इस प्रकार यह धीमा हो जाता है। साथ ही, उत्तर के अंतिम अनुच्छेद में वर्णित '@ all' में वही समस्या है, आपको अभी भी 'रेंडर' में फॉर्म आईडी निर्दिष्ट करने की आवश्यकता होगी। – BalusC
@ बालससी इस उत्तर के लिए धन्यवाद, मुझे समझ में आया कि समस्या क्या है। –