在JSF阶段

时间:2018-03-28 16:14:04

标签: jsf primefaces datatable rowexpansion

我有一个使用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()方法:(ApplyRequestValuesPhaseProcessValidationsPhaseUpdateModelValuesPhase),当使用分页符时。

我已经推断出rowExpansion是视图的一部分,并被评估为普通组件。

你介意告诉我这是否是rowExpansion的预期行为?

使用分页器时是否有正确的方法来阻止评估rowExpansion内容?

感谢您的回答。

注意:我使用的是PrimeFaces 5.2。

0 个答案:

没有答案