我使用的是Prmefaces 3.5。我在数据表中使用RowToggler。每当单击RowToggle按钮时,我都会执行一些数据库访问操作,并显示一个包含访问数据的网格。
每当单击切换按钮时,调用下面的侦听器,在其中执行操作
<p:ajax event="rowToggle" listener="#{controller.onRowToggle}"
但是问题在于调用这个方法。不仅在展开行时调用此方法,而且在行折叠时也会调用此方法。在折叠行时不需要执行数据库操作,因此这将是一个昂贵的操作。
请建议如何知道行是否扩展或折叠,以便我可以有条件地执行操作?
您是否尝试在侦听器中使用ToggleEvent#getVisibility()
方法?这里的例子:
public void onRowToggle(ToggleEvent event) {
if (event.getVisibility() == Visibility.VISIBLE) {
// your code here
}
}
如果您想使RT 仅在行正在展开时,这将起作用:
<p:ajax
event="rowToggle"
onstart="return cfg.ext.params[0].name.indexOf('_rowExpansion') != -1"
listener="#{fooViewModel.onRowToggle}"
/>