0

我有一个使用 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。

4

0 回答 0