我在 Primefaces 3.5 中有一个 DataTable,就像这样,
<p:panel id="dataTablePanel" toggleable="true" toggleOrientation="horizontal" closable="false" header="Data">
<p:dataTable id="dataTable" var="row" value="#{bean}"
lazy="true"
pageLinks="10"
paginator="true"
sortMode="multiple"
resizableColumns="true"
sortOrder="descending"
editable="true"
filterEvent="keyup"
selection="#{bean.selectedValues}"
rowsPerPageTemplate="5,10,15"
rows="10"
rowKey="#{row.id}"
rowIndexVar="rowIndex"
editMode="row">
...
</p:dataTable>
</p:panel>
在对这个 DataTable 执行一些操作时,我使用<p:blockUI>
如下来阻止这个 DataTable。
<p:blockUI block="dataTable" trigger="dataTable">
Loading<br />
<p:graphicImage value="../resources/images/ajax_loader_image/ajax-loader.gif"/>
</p:blockUI>
这工作正常。
我正在使用<p:commandButton>
which 当按下时会导致一行插入到数据库中,因此 DataTable 通过 AJAX 更新(此按钮由另一个具有 id 属性id="panel"
和一些必要的 UIComponents 之类的面板持有<p:inputText>
)。
<p:commandButton
id="btnSubmit"
update="dataTable panel"
actionListener="#{bean.insert}"
icon="ui-icon-check"
value="Save"/>
添加一行时,DataTable 会更新,<p:blockUI>
并且不会在后面工作。为什么会这样?
因此,我暂时阻止了包含 DataTable 的面板,如下所示,
<p:blockUI block="dataTablePanel" trigger="dataTable">
Loading<br />
<p:graphicImage value="../resources/images/ajax_loader_image/ajax-loader.gif"/>
</p:blockUI>
在这种情况下,block="dataTable"
已更改为block="dataTablePanel"
。
为什么通过 AJAX 更新后 DataTable 没有单独被阻止?