p:rowExpansion 仅在打开时调用 rowToggle 事件

p:rowExpansion call rowToggle event only on open

我有一些代码,像这样:

<p:rowExpansion>
   <p:datatable>
      <p:ajax event="rowToggle" listener="methodCall()">
      <p:column>

我的问题是 rowToggle 事件在 rowExpansion 的打开和关闭时调用侦听器。

是否可以只在打开时调用事件?

您需要创建一个侦听器,该侦听器采用该事件的 ToggleEvent as a parameter. Then you can read the Visibility 来确定该行是打开还是关闭。

因此,您的侦听器方法应如下所示:

public void onRowToggle(ToggleEvent event) {
  if (event.getVisibility() == Visibility.VISIBLE) {
    //...
  }
}

并且link它在你使用 EL 的 XHTML 中没有括号:

<p:ajax event="rowToggle" listener="#{myBean.onRowToggle}"/>