2012-11-21 11 views
24
<ui:define name="content"> 
    <f:view>       
    <h:form id="myForm" styleClass="form" > 

     <p:dataTable var="provider" id="ss" value="#{providerSelectBean.providerList}" rowKey="#{provider.license}" 

      selection="#{providerSelectBean.selectedProvider}" selectionMode="single"> 

      <p:ajax listener="#{providerSelectBean.onRowSelect}"  
          update=":myForm:output"event="rowSelect"/> 

      <p:column sortBy="#{provider.license}" width="110" > 
       <f:facet name="header"> 
        <h:outputText value="License#" /> 
       </f:facet> 
       <h:outputText value="#{provider.license}" /> 
      </p:column> 

      <p:column sortBy="#{provider.prgName}" width="110" > 
       <f:facet name="header"> 
        <h:outputText value="Program Name" /> 
       </f:facet> 
       <h:outputText value="#{provider.prgName}" /> 
      </p:column> 

     </p:dataTable><br/> 

     <p:panelGrid id="output" > 
      <h:outputText value="License" /> 
      <h:outputText value="#{provider.license}" /> 
     </p:panelGrid> 

    </h:form>   
    </f:view> 

</ui:define>  

यह JSF2.0 और primefaces 3.4.1 के साथ अपने पहले कार्यकाल है और <p:ajax update एक त्रुटि उत्पन्न एचटीएमएल कोड का निरीक्षण करने केPrimefaces - बाहर पहचानकर्ता के साथ घटक नहीं खोजा जा सका datatable

javax.faces.FacesException: Cannot find component with identifier 
":myForm:output" referenced from "myForm:ss" 
+0

आप डेटाटेबल के बाहर परिवर्तनीय 'प्रदाता' का उपयोग कर रहे हैं, जहां अब उपलब्ध नहीं है। – jmrodrigg

+0

'' ' – kolossus

उत्तर

26

कोशिश देता है और अपने पैनल के लिए उत्पन्न वास्तविक आईडी देखें और उस आईडी को अपडेट करें। यदि यह गतिशील होता है, तो आप हमेशा JQuery CSS चयनकर्ताओं का उपयोग कर सकते हैं (मुझे लगता है कि मैं खुद को अक्सर ऐसा कर रहा हूं)। आपके मामले में, आप इस तरह जा सकते हैं:

update="@([id$=output])" 

यह अभिव्यक्ति हर घटक जिसका आईडी उत्पादन के साथ समाप्त होता है के लिए खड़ा है। अधिक जानकारी के लिए JQuery दस्तावेज़ों पर एक नज़र डालें।

+0

के साथ आवश्यक नहीं है I item.setUpdate में इस चाल का उपयोग किया, बहुत धन्यवाद! –

+0

मुझे एक ही समस्या थी, और यह समाधान पूरी तरह से काम करता था। मैं पी: घटक का उपयोग कर, दूसरे के साथ इतना भाग्यशाली नहीं था। –

+0

मुझे एक ही समस्या थी और यह एक आकर्षण की तरह काम किया। हालांकि, मुझे लगता है कि यह प्राइमफेस के साथ बहिष्कृत हो रहा है ... – Sammy

24

तुम भी रूप में उपयोग कर सकते हैं :#{p:component(componentId)} में

<p:ajax listener="#{providerSelectBean.onRowSelect}" 
update=":#{p:component('output')}" event="rowSelect"/> 

BalusC के जवाब का हवाला देते हुए Get id of parent naming container in template for in render/update attribute रहे हैं:

p: घटक एक सहायक समारोह है कि दी गई ID वाला एक घटक के लिए पूरे दृश्य जड़ को स्कैन करता है है और उसके बाद अपनी ग्राहक आईडी लौटाता है।

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