2013-02-15 15 views
7

ta nie działa dla mnie:Jak odwołać się do p: commandLink w p: dataTable z p: blockUI trigger?

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

błędu, że jestem coraz to:

Cannot find component with identifier "editWatchfolderButtonId".

Kiedy używany Firebug szukać ID, odkryłem, że każdy rząd ma inny identyfikator:

wfMgtForm:wfTable:0:editWatchfolderButtonId wfMgtForm:wfTable:1:editWatchfolderButtonId wfMgtForm:wfTable:2:editWatchfolderButtonId wfMgtForm:wfTable:3:editWatchfolderButtonId
itp

Jak należy odwoływać się do tego Automatycznie utworzone Identyfikatory z mojego <p:blockUI>?

Odpowiedz

10

<p:dataTable> również NamingContainer. Dołącz także jego identyfikator.

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

Indeks wiersza występuje tylko po stronie klienta, a nie po stronie serwera, więc to nie ma znaczenia.


Aktualizacja: tylko przetestowane go lokalnie, to rzeczywiście ustala wyjątek, ale nie wywoła interfejs bloku na wszystkich (PrimeFaces 3.5). Wygląda jak błąd w PrimeFaces.

W międzyczasie, najlepiej jest ręcznie wywołać go jako sugerowane przez Aksel, ale potem nieco inna:

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

błąd? ohhh nie znowu ... – Danijel

+0

Dla mnie też w wersji 3.4.1, nie ma już żadnego wyjątku, ale nadal nie zablokowałem interfejsu użytkownika. – Danijel

+0

To całkowicie pogarsza komfort użytkowania mojego interfejsu użytkownika. Czy istnieje * jakaś * możliwość dostarczenia łatki dla PrimeFaces? Jak trudno to naprawić? – Danijel

4

Oto trywialny przykład użycia polecenia commandLink do zablokowania czegoś. Zmodyfikowany gabloty przykład z 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

Edytowałem pytanie, proszę spojrzeć. – Danijel

+0

Zgadnij, że "ktoś" był szybszy, ale zachowuję odpowiedź, gdy BalusC ją odwołuje. :) Dla każdego, kto to widzi w przyszłości, warto zauważyć, że ta odpowiedź pasuje do pierwotnego pytania lepiej niż edytowane. –

0

Dla tych, jako pojęcia jak ja, jeśli BlockUI nie jest wypalanie, sprawdzić, że " wyzwalacz "cel ma włączony Ajax. Spędziłem prawie dzień próbując dowiedzieć się, dlaczego BlockUI nie uruchomił się i stwierdził, że jego cel został skonfigurowany jako "ajax =" false "".

0

Można użyć selektora jquery.

<p:commandLink styleClass="mybutton-class"> 
<p:blockUI ... trigger="@(.mybutton-class)"> 
Powiązane problemy