这对我不起作用:

<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 查找 ID 时,我发现每一行都有不同的 ID:
wfMgtForm:wfTable:0:editWatchfolderButtonIdwfMgtForm:wfTable:1:editWatchfolderButtonIdwfMgtForm:wfTable:2:editWatchfolderButtonIdwfMgtForm:wfTable:3:editWatchfolderButtonId等等。

我应该如何从我的 <p:blockUI> 引用这个自动创建的 ID?

最佳答案

<p:dataTable> 也是 NamingContainer 。还包括其 ID。

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

行索引仅存在于客户端,而不存在于服务器端,因此无关紧要。

更新:只是在本地对其进行了测试,它确实解决了异常,但它根本没有触发块UI(PrimeFaces 3.5)。看起来像 PrimeFaces 中的一个错误。

与此同时,你最好的办法是按照 Aksel 的建议手动触发它,但又有些不同:
<p:commandLink ... onclick="bui.show()" oncomplete="bui.hide()">
...
<p:blockUI widgetVar="bui" />

关于jsf - 如何引用 p :commandLink in p:dataTable from p:blockUI trigger?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14893751/

10-11 11:02