这对我不起作用:
<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
等
如何从我的<p:blockUI>
?
答案 0 :(得分: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" />
答案 1 :(得分:4)
这是使用commandLink阻止某些事情的简单示例。修改了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>
答案 2 :(得分:0)
对于那些像我一样无能为力的人,如果BlockUI没有被触发,请检查&#34;触发&#34; target已启用Ajax。我花了将近一天的时间试图弄清楚为什么BlockUI没有开火,并发现我的目标配置为&#39; ajax =&#34; false&#34;&#39;。
答案 3 :(得分:0)
您可以使用jquery选择器。
<p:commandLink styleClass="mybutton-class">
<p:blockUI ... trigger="@(.mybutton-class)">