I am currently trying to implement a lazy loading row expansion. I added a dataGrid in my rowExpansion which value attribute is a method which gets a detailed User from database.
When I debugged this method (userBacking.getDetailedUserById(Long userId))
I recognized that this method is called minimum 5 times when I click on a row.
Does anyone know why this method is called so many times?
Are there better approaches to implement a lazy loading row Expansion?
<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>