我有一个使用rowExpansion的数据表。 加载页面时,不会评估rowExpansion,这很好。 当分页器用于显示下一个结果或提交完成时 - 将触发rowExpansion评估。
这是一个XHTML示例:
<h:form>
<p:dataTable var="data" value="#{bean.dataList}" paginator="true">
<p:column headerText="Details">
<p:rowToggler />
</p:column>
<p:rowExpansion>
<h:panelGroup rendered="#{not empty data.detail}">
<ui:include src="dataDetail.xhtml" />
</h:panelGroup>
</p:rowExpansion>
</p:dataTable>
<h:commandLink id="addData" value="Add data" action="#{bean.addData}" />
</h:form>
我使用visualVM描述了这个流程,并使用调试器发现在以下JSF阶段调用了data.getDetail()
方法:(ApplyRequestValuesPhase
,ProcessValidationsPhase
, UpdateModelValuesPhase
),当使用分页符时。
我已经推断出rowExpansion是视图的一部分,并被评估为普通组件。
你介意告诉我这是否是rowExpansion的预期行为?
使用分页器时是否有正确的方法来阻止评估rowExpansion内容?
感谢您的回答。
注意:我使用的是PrimeFaces 5.2。