jsf - जेएसएफ+प्राइमफेस: 'अपडेट' विशेषता घटक अद्यतन नहीं करता है



jsf-2 primefaces (1)

मेरा लेआउट यहाँ है

<div id="mainPanel">
   <div id="padding">
       <h:outputText id="text" value="Personal Feed" rendered="#{Profile.renderComment}"/>
   </div>
   <div id="right">
       <h:form>
           <p:commandButton value="Update" actionListener="#{bean.toggleComment}" update="text" />
       </h:form>
   </div>
</div>

जब मैं लिंक Update क्लिक करता हूं, जिसे renderComment बूलियन चालू और बंद टॉगल करना होता है, तो यह टेक्स्ट Personal Feed के प्रदर्शन को टॉगल नहीं करता है। अब अगर मैं h:outputText आसपास एक फॉर्म h:outputText , और इसके बजाय form update करें, तो यह काम करता है। ऐसा क्यों है?


update विशेषता को HTML DOM पेड़ में मौजूदा क्लाइंट आईडी को इंगित करना चाहिए। हालांकि, चूंकि तत्व HTML DOM पेड़ में उपलब्ध नहीं है क्योंकि यह सर्वर पक्ष द्वारा प्रदान नहीं किया जाता है, जेएस / AJAX को HTML DOM पेड़ में अपडेट करने के लिए कुछ भी नहीं मिल सकता है।

वास्तव में, आपको इसे किसी अन्य तत्व में लपेटना चाहिए जो हमेशा एचटीएमएल डोम पेड़ में उपलब्ध होता है ताकि अजाक्स इसका पता लगा सके और फिर update में अपनी क्लाइंट आईडी का उपयोग कर सके। आपके मामले में, आप इसके लिए padding उपयोग कर सकते हैं।

<div id="mainPanel">
   <h:panelGroup id="padding" layout="block">
       <h:outputText id="text" value="Personal Feed" rendered="#{Profile.renderComment}"/>
   </h:panelGroup>
   <div id="right">
       <h:form>
           <p:commandButton value="Update" actionListener="#{bean.toggleComment}" update=":padding" />
       </h:form>
   </div>
</div>




primefaces