7

这对我不起作用:

<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:editWatchfolderButtonId wfMgtForm:wfTable:1:editWatchfolderButtonId wfMgtForm:wfTable:2:editWatchfolderButtonId wfMgtForm:wfTable:3:editWatchfolderButtonId
等等

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

4

4 回答 4

10

<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" />
于 2013-02-15T14:05:43.160 回答
4

这是一个使用 commandLink 阻止某些东西的简单示例。从这里修改了展示示例

<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>
于 2013-02-15T11:50:52.607 回答
0

对于像我这样一无所知的人,如果 BlockUI 没有触发,请检查“触发器”目标是否启用了 Ajax。我花了将近一天的时间试图弄清楚为什么 BlockUI 没有触发,并发现我将其目标配置为 'ajax="false"'。

于 2014-04-02T15:32:30.183 回答
0

您可以使用 jquery 选择器。

<p:commandLink styleClass="mybutton-class">
<p:blockUI ... trigger="@(.mybutton-class)">
于 2015-12-07T15:56:52.340 回答