在扩展行之前,<p:rowExpansion>
中的数据存在问题(这会导致大量的Web服务请求)。
我正在使用PrimeFaces 5.2。我有一个带延迟加载和分页的dataTable。在表格内,我<p:rowToggler>
<p:rowExpansion>
:
<p:dataTable var="order"
widgetVar="orderTable"
lazy="true"
value="#{ordersBean.orders}"
paginator="true"
rows="20"
rowsPerPageTemplate="20,50,100"
filterDelay="300"
styleClass="filtered">
<p:column width="4%">
<p:rowToggler />
</p:column>
<p:column headerText="Order number" width="96%">
<h:outputText value="#{order.number}" />
</p:column>
<p:rowExpansion>
<h:panelGrid columns="1">
<h:outputText value="#{order.number}" />
<h:outputText value="#{order.info}" />
<h:dataTable var="item" value="#{ordersBean.getItemsInOrder(order.number)}">
<h:column>
<h:outputText value=" #{item.title}" />
</h:column>
</h:dataTable>
</h:panelGrid>
</p:rowExpansion>
</p:dataTable>
当我第一次加载页面时,除了扩展行时,不会调用getItemsInOrder()
方法。但是,如果我使用分页器导航到第2页(或者我之后导航回第1页),则会为外部表中的每一行调用getItemsInOrder()
。由于我显示了20行,因此在页面之间导航会导致20个Web服务请求(getItemsInOrder()
)。
如何阻止它在扩展行之前调用getItemsInOrder()
方法?
答案 0 :(得分:0)
我有同样的问题。在找到更好的解决方案之前,这是我正在使用的解决方法: