【发布时间】:2014-12-04 07:34:30
【问题描述】:
我在 primefaces 中有一个 p:datatable,我有不同的侦听器,用于在数据表中选择行事件的不同方式。
我需要确定表格中所选行何时已被选中,我该怎么做?
我需要这个,因为当我在已选择的表中选择行时,我不希望 p:blockUI 运行。
有我的页面代码:
...
<pe:blockUI autoShow="true"
source="itemsDT"
event="rowSelect"
target=":processTab">
<au:loading />
</pe:blockUI>
<p:dataTable widgetVar="processesTable"
id="itemsDT"
var="item"
value="
{tasksbacking2.availableProcesses}"
selection="#{tasksbacking2.selectedProcess}"
rowKey="#{item.id}"
tableStyleClass="table
table-condensed table-bordered"
resizableColumns="true">
<p:ajax event="rowSelect"
listener="#{tasksbacking2.onClickFillDetails}"
update="@this,:processTab,:menuForm:menuBar" />
...
</p:dataTable>
...
在托管 bean 上我有这个监听器:
...
public void onClickFillDetails(SelectEvent event) {
AnoProcess clickedProcess = (AnoProcess) event.getObject();
setSelectedProcess(clickedProcess);
Movement currentMovement = this.getProcessesLastMovement().get(clickedProcess);
if (currentMovement != null && !currentMovement.isViewed()) {
markAsRead(processes);
}
...
}
【问题讨论】:
-
您使用的是 primefaces 5.1 吗?或者你能告诉你的primefaces lib版本吗?因为我看不到您在 `p:blockUI 上使用的某些属性,或者您正在使用其他组件?
-
我使用 primefaces 5.0 并使用 primefaces-extensions(用于带有事件捕获的 blockUI)。看到这个primefaces.org/showcase-ext/views/…
-
哦,好的。您可以使用
RequestContext解决此问题,并在新选择的项目与上次选择的项目不同时运行pe:blockUI。 -
你能把五月的版本替换为
p:blockUI到pe:blockUI请,是我的错误。 -
改变上下文不是解决办法。是的,我再次编辑。我的解决方案可能在 p:ajax 中的 onstart 事件中,如下所示:
标签: jsf-2 primefaces primefaces-extensions