Jsf 如何使用blockUI在primefaces中阻止单个datatable单元格
我正在用一些动态生成的列创建一个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
<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>
作为一个注释,我还希望在标题上有一个按钮来阻止和刷新整个列,但我希望如果我能解决这个问题,我就能解决另一个问题。为另一个问题创建一个问题似乎有点垃圾,但如果有人能够帮助我,我不希望他们的答案被隐藏在评论中,或者作为这个问题的答案。