2011-01-01 14 views
23

अपडेट नहीं होता यहाँ मेरी लेआउट हैJSF + PrimeFaces: `update` विशेषता घटक

<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 के आसपास एक फॉर्म डालता हूं, और updateform इसके बजाय, यह काम करता है। ऐसा क्यों है?

उत्तर

57

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

बलूसी, 'पैडिंग' से पहले प्रस्तुत गुण में क्या है? एक स्तर ऊपर? – rozerro

+0

@rozerro: http://stackoverflow.com/q/8634156 – BalusC

संबंधित मुद्दे