2013-02-15 18 views
7

Bu benim için çalışmıyor:Başvuru nasıl yapılır p: commandLink p: dataTable from p: blockUI tetikleyicisi?

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

alıyorum hatadır:

Cannot find component with identifier "editWatchfolderButtonId".

wfMgtForm:wfTable:0:editWatchfolderButtonId wfMgtForm:wfTable:1:editWatchfolderButtonId wfMgtForm:wfTable:2:editWatchfolderButtonId wfMgtForm:wfTable:3:editWatchfolderButtonId
vb benim yarattığım bu auto başvuruda bulunmalıdır nasıl

: Ben kimliğini arayın Firebug'u kullanıldığında

, ben her satır farklı bir kimliğinin olduğunu keşfetti Benim <p:blockUI> numarasından kimlikler?

cevap

10

<p:dataTable> gelen vitrin örnek modifiye da NamingContainer olup. Onun kimliğini de dahil et.

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

Satır dizini, yalnızca istemci tarafında değil, sunucu tarafında bulunur, dolayısıyla ilgili değildir.


Güncelleme: Sadece gerçekten istisna düzeltir, yerel olarak test edilmiş, ancak hepsi (PrimeFaces 3.5) de blok UI tetiklemek vermedi. PrimeFaces'de bir böcek gibi görünüyorsun. Bu arada

, en iyi bahis sonra biraz farklı Aksel önerdiği gibi manuel olarak tetiklemek için, ama: BlockUI olmadığını kontrol ateş değilse,

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

bir hata mı? ohhh tekrar değil ... – Danijel

+0

Benim için de v 3.4.1'de artık bir istisna yok, ama hala engellediğim bir kullanıcı yok. – Danijel

+0

Bu, kullanıcı arayüzüm için kullanıcı deneyimini düşürür. PrimeFaces için bir yama sağlamanın * olasılığı var mı? Düzeltmek ne kadar zor? – Danijel

4

Bir şeyleri engellemek için commandLink komutunu kullanmanın çok önemli bir örneği. 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

Soruyu düzenledim, lütfen bir göz atın. – Danijel

+0

Sanırım 'bir başkası' daha hızlıydı, ama BalusC bunu referans olarak görüyorum. :) Gelecekte bunu gören herkes için, bu cevabın orijinal soruyu düzenlenmiş olandan daha iyi olduğuna dikkat etmek faydalı olabilir. –

0

olanlar için kendim gibi clueless " tetikleyici "hedef Ajax etkin". Neredeyse bir gün BlockUI'nin neden ateş etmediğini anlamaya çalıştım ve hedefinin 'ajax =' false '' olarak yapılandırıldığını tespit ettim.

0

Bir jquery seçici kullanabilirsiniz.

<p:commandLink styleClass="mybutton-class"> 
<p:blockUI ... trigger="@(.mybutton-class)"> 
İlgili konular