我目前正在执行一个延迟加载行扩张。 我加了一个DataGrid在我rowExpansion其价值属性是它会从数据库的详细用户的方法。
当我调试这个方法(userBacking.getDetailedUserById(Long userId))
我承认,当我点击某一行上调用此方法至少5倍。 没有人知道为什么这种方法称为这么多次? 是否有实施延迟加载行扩展更好的方法?
<p:dataTable id="myPassengerTable"
value="#{userBacking.userTableData}" var="user"
selection="#{myRoutesBacking.selectedUser}"
selectionMode="single"
emptyMessage="no users">
<p:ajax event="rowSelect" listener="#{userBacking.onRowSelect}" />
<p:ajax event="rowUnselect"
listener="#{userBacking.onRowUnselect}" />
<p:column styleClass="expand#{user.id}"
style="display:none;">
<p:rowToggler />
</p:column>
<p:column >
<h:outputText
value="#{user.username}" />
</p:column>
<p:rowExpansion>
<p:dataGrid var="detailedUser"
value="#{userBacking.getDetailedUserById(user.Id)}"
columns="1" rows="1">
<p:panelGrid>
<p:row>
<p:column>#{detailedUser.firstName} #{detailedUser.lastName}</p:column>
</p:row>
</p:panelGrid>
</p:dataGrid>
</p:rowExpansion>
</p:dataTable>