Jsf 如何使用blockUI在primefaces中阻止单个datatable单元格

Jsf 如何使用blockUI在primefaces中阻止单个datatable单元格,jsf,primefaces,Jsf,Primefaces,我正在用一些动态生成的列创建一个datatable。在这些列的每个单元格中,都有一个按钮用于刷新该特定单元格的数据 我想要的是,当按下该单元格上的按钮时,该单元格被阻止 示例代码: <p:dataTable id="table" var="tableVar" value="#{tableValues}"> <p:columns id="column" var="columnVar" value="#{columnValues}"> <f:fa

我正在用一些动态生成的列创建一个datatable。在这些列的每个单元格中,都有一个按钮用于刷新该特定单元格的数据

我想要的是,当按下该单元格上的按钮时,该单元格被阻止

示例代码:

<p:dataTable id="table" var="tableVar" value="#{tableValues}">
    <p:columns id="column" var="columnVar" value="#{columnValues}">
        <f:facet name="header">
            <h:outputText value ="#{columnVar}"/>
        </f:facet>
        <h:outputText value="Some Text"/>
        <p:commandButton value="Button Text"
                         id="button"
                         update="table"
                         actionListener="#{some.method()}"/>

        <p:blockUI block="?????" trigger="button">
            <p:graphicImage name="loading.gif"/>
        </p:blockUI>
    </p:columns>
</p:dataTable>

我不知道在
参数中应该放什么来只块一个单元格。我还尝试了
block=“column”
,但即使这样也没有像我预期的那样阻止列,相反,它只是在按钮附近显示加载的gif,但没有阻止任何内容


我见过这个问题,答案说不可能指定单个单元格,但它是从2012年开始的,答案提到它可能会在更高版本上得到修复。

玩了一会儿后,我找到了一个解决方案

您可以围绕单元格内容定义一个
,然后在blockUI组件中使用
block=“cell”
将其阻止

结果是:

<p:dataTable id="table" var="tableVar" value="#{tableValues}">
    <p:columns id="column" var="columnVar" value="#{columnValues}">
        <f:facet name="header">
            <h:outputText value ="#{columnVar}"/>
        </f:facet>
        <p:outputpanel id="cell">
            <h:outputText value="Some Text"/>
            <p:commandButton value="Button Text"
                             id="button"
                             update="table"
                             actionListener="#{some.method()}"/>

            <p:blockUI block="cell" trigger="button">
                <p:graphicImage name="loading.gif"/>
            </p:blockUI>
        </p:outputpanel>
    </p:columns>
</p:dataTable>

作为一个注释,我还希望在标题上有一个按钮来阻止和刷新整个列,但我希望如果我能解决这个问题,我就能解决另一个问题。为另一个问题创建一个问题似乎有点垃圾,但如果有人能够帮助我,我不希望他们的答案被隐藏在评论中,或者作为这个问题的答案。