Primefaces RowToggle - 如何区分行扩展和行折叠?

Man*_*ish 3 javascript jquery jsf primefaces

我正在使用 Prmefaces 3.5。我在数据表中使用 RowToggler。每当单击 RowToggle 按钮时,我都会执行一些数据库访问操作并显示包含所访问数据的网格。

每当单击切换按钮时,都会调用下面的侦听器,在其中完成操作

<p:ajax event="rowToggle" listener="#{controller.onRowToggle}" 
Run Code Online (Sandbox Code Playgroud)

但问题就出在这个方法的调用上。不仅在展开行时调用此方法,还在折叠行时调用此方法。折叠行时不需要完成数据库操作,因此这是一项昂贵的操作。

请建议如何知道该行是展开还是折叠,以便我可以有条件地执行操作?

Mac*_*ski 5

您是否尝试过ToggleEvent#getVisibility()在侦听器中使用方法?这是例子:

public void onRowToggle(ToggleEvent event) {
    if (event.getVisibility() == Visibility.VISIBLE) {
        // your code here
    }
}
Run Code Online (Sandbox Code Playgroud)


use*_*049 5

如果您只想在扩展行时才进行 RT ,则可以使用以下方法:

<p:ajax
    event="rowToggle"                                            
    onstart="return cfg.ext.params[0].name.indexOf('_rowExpansion') != -1"
    listener="#{fooViewModel.onRowToggle}"
/>
Run Code Online (Sandbox Code Playgroud)