使用p:blockUI或pe:blockUI来阻塞迭代组件(如p:dataTable)的子/封闭组件是不起作用的



我的目标是<p:dataTable><pe:blockUI>阻断,如下所示。

<pe:blockUI target="dataTable" widgetVar="blockUIWidget">
    <h:outputText value="Sending data..."/>
</pe:blockUI>
<p:dataTable id="dataTable" var="row" value="Test">
    <p:column>
        <p:commandLink id="link" value="Link" onstart="PF('blockUIWidget').block()" oncomplete="PF('blockUIWidget').unblock()"/>
    </p:column>
</p:dataTable>

很自然,这个功能很好。


我不需要针对整个数据表,而只需针对表内的链接。下面的尝试是不成功的。

<pe:blockUI target="dataTable:link" widgetVar="blockUIWidget">
    <h:outputText value="Sending data..."/>
</pe:blockUI>

这里,target属性的值由dataTable改为dataTable:link,使其指向链接(数据表保持不变)。

在这种情况下,它保持静音。浏览器控制台上既没有出现错误,也没有出现异常。


同样的事情发生在<p:blockUI>上。下面的尝试很好地发挥了作用

<p:blockUI block="dataTable" widgetVar="blockUI"/>
<p:dataTable id="dataTable" var="row" value="Test">
    <p:column>
        <p:commandLink id="link" value="Link" onstart="PF('blockUI').show()" oncomplete="PF('blockUI').hide()"/>
    </p:column>
</p:dataTable>

<p:blockUI>像下面这样指向表中的<p:commandLink>是行不通的。

<p:blockUI block="dataTable:link" widgetVar="blockUI"/>

还是没有错误,没有异常

有什么意义?迭代组件的封闭组件可以不被<p:blockUI><pe:blockUI>作为目标吗?

当在数据表列/s内部定义<p/pe:blockUI>时,这样做效果很好,

<p:dataTable id="dataTable" var="row" value="Test">
    <p:column>
        <!--Using PrimeFaces Extensions <pe:blockUI>-->
        <pe:blockUI target="link" widgetVar="blockUIWidget">
            <h:outputText value="Sending data..."/>
        </pe:blockUI>
        <p:commandLink id="link" value="Link" onstart="PF('blockUIWidget').block()" oncomplete="PF('blockUIWidget').unblock()"/>
    </p:column>
    <p:column>
        <!--Using PrimeFaces <p:blockUI>-->
        <p:blockUI block="link1" widgetVar="blockLink1UI" />
        <p:commandLink id="link1" value="Link1" onstart="PF('blockLink1UI').show()" oncomplete="PF('blockLink1UI').hide()"/>
    </p:column>
    <p:column>
        <!--Using PrimeFaces <p:blockUI>-->
        <p:blockUI block="link2" widgetVar="blockLink2UI" />
        <p:commandLink id="link2" value="Link2" onstart="PF('blockLink2UI').show()" oncomplete="PF('blockLink2UI').hide()"/>
    </p:column>
</p:dataTable>

相关内容

  • 没有找到相关文章

最新更新