我有一个使用 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 分析了这个流程,并使用了调试器,发现该data.getDetail()
方法在以下 JSF 阶段被调用:( ApplyRequestValuesPhase
, ProcessValidationsPhase
, UpdateModelValuesPhase
),当使用分页器时。
我已经推断出 rowExpansion 是视图的一部分,并且被评估为普通组件。
您介意告诉我这是否是 rowExpansion 的预期行为吗?
使用分页器时是否有正确的方法来防止评估 rowExpansion 内容?
感谢您的回答。
注意:我使用的是 PrimeFaces 5.2。