2013-02-15 5 views
7

यह मेरे लिए काम नहीं कर रहा:पी को कैसे संदर्भित करें: p में कमांड लिंक्स: डेटा से पी: ब्लॉकयूआई ट्रिगर?

<h:form id="wfMgtForm"> 
    . 
    . 
    . 
    <p:dataTable id="wfTable" ..." var="item"> 
     <p:column> 
     . 
     . 
     . 
     </p:column> 
     <p:column> 
      <p:commandLink id="editWatchfolderButtonId" oncomplete="dlgEditWF.show()" update=":editWFForm" process="@none"> 
       <f:param value="#{item.value.ID}" name="editId"/> 
       <h:graphicImage alt="Edit Image" style="border: none" value="./images/edit.png" /> 
      </p:commandLink> 
     </p:column> 
    . 
    . 
    . 
    <p:blockUI block=":wfMgtForm" trigger="editWatchfolderButtonId"> 
     Loading...<br/> 
     <p:graphicImage alt="Loader Image" value="/images/loader.gif"/> 
    </p:blockUI> 
</h:form> 

त्रुटि है कि मैं हो रही है:

Cannot find component with identifier "editWatchfolderButtonId"

जब मैं Firebug इस्तेमाल किया आईडी देखने के लिए, मुझे पता चला कि हर पंक्ति एक अलग आईडी है:

wfMgtForm:wfTable:0:editWatchfolderButtonId wfMgtForm:wfTable:1:editWatchfolderButtonId wfMgtForm:wfTable:2:editWatchfolderButtonId wfMgtForm:wfTable:3:editWatchfolderButtonId
आदि

मैं इस ऑटो बनाया का उल्लेख होना चाहिए कैसे मेरे <p:blockUI> से आईडी?

उत्तर

10

<p:dataTable> शोकेस उदाहरण संशोधित भी एक NamingContainer है। इसके आईडी भी शामिल करें।

<p:blockUI ... trigger="wfTable:editWatchfolderButtonId"> 

पंक्ति सूचकांक केवल क्लाइंट पक्ष में मौजूद है, सर्वर पक्ष में नहीं, इसलिए यह प्रासंगिक नहीं है।


अद्यतन: बस इसे स्थानीय स्तर पर परीक्षण किया है, यह वास्तव में अपवाद को ठीक करता है, लेकिन यह सब (PrimeFaces 3.5) पर ब्लॉक यूआई ट्रिगर नहीं किया। प्राइमफेस में एक बग की तरह लग रहा है।

इस बीच, अपने सबसे अच्छे शर्त मैन्युअल रूप से इसे गति प्रदान करने के रूप में Aksel ने सुझाव दिया कुछ अलग है, लेकिन फिर:

<p:commandLink ... onclick="bui.show()" oncomplete="bui.hide()"> 
... 
<p:blockUI widgetVar="bui" /> 
+1

एक बग? ओह नहीं ... – Danijel

+0

मेरे लिए भी 3.4.1 में, कोई अपवाद नहीं है, लेकिन फिर भी कोई यूआई अवरुद्ध नहीं है। – Danijel

+0

यह यूआई मेरे यूआई के लिए उपयोगकर्ता अनुभव को कम करता है। क्या प्राइमफेस के लिए पैच प्रदान करने की कोई * संभावना है? इसे ठीक करना कितना मुश्किल है? – Danijel

4

कुछ अवरुद्ध करने के लिए कमांडलिंक का उपयोग करने का एक छोटा उदाहरण यहां दिया गया है। से here

<h:form> 
    <p:commandButton value="blockMe" id="someId" /> 
    <br /> 
    <p:commandLink id="pnlBtn" value="Block" type="button" 
     onclick="bui.show()" /> 
    <br /> 
    <p:commandLink id="pnlBtn2" value="Unblock" type="button" 
     onclick="bui.hide()" /> 

    <p:blockUI block="someId" widgetVar="bui" /> 
</h:form> 
+0

मैंने प्रश्न संपादित किया है, कृपया एक नज़र डालें। – Danijel

+0

मान लीजिए 'कोई और' तेज़ था, लेकिन मैं इसका उत्तर बैलससी संदर्भ के रूप में रखता हूं। :) भविष्य में इसे किसी को भी बैठने के लिए, यह ध्यान देने योग्य हो सकता है कि यह उत्तर मूल प्रश्न को संपादित करने से बेहतर तरीके से फिट करता है। –

0

उन लोगों के लिए अपने आप के रूप में रूप में जानकारी नहीं है, अगर BlockUI फायरिंग नहीं है, जांचें कि " ट्रिगर "लक्ष्य अजाक्स सक्षम है। मैंने लगभग एक दिन बिताया कि क्यों ब्लॉकयूआई ने आग नहीं डाली और पाया कि मेरा लक्ष्य 'AJAX =' false '' के रूप में कॉन्फ़िगर किया गया था।

0

आप एक jquery चयनकर्ता का उपयोग कर सकते हैं।

<p:commandLink styleClass="mybutton-class"> 
<p:blockUI ... trigger="@(.mybutton-class)"> 
संबंधित मुद्दे